https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387
--- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- (In reply to Iain Sandoe from comment #4) > 3. > > Anyway, assuming that the intention is to unwrap the indirection from the call > - something like: ... The following patch fixes the failures (not counting new ones: g++.dg/debug/dwarf2/imported-decl-2.C and g++.dg/tls/diag-1.C). --- ../_clean/gcc/config/i386/i386.c 2014-06-04 00:42:24.000000000 +0200 +++ gcc/config/i386/i386.c 2014-06-04 15:05:42.000000000 +0200 @@ -38898,7 +38898,9 @@ x86_output_mi_thunk (FILE *file, { if (sibcall_insn_operand (fnaddr, word_mode)) { - tmp = gen_rtx_CALL (VOIDmode, fnaddr, const0_rtx); + fnaddr = XEXP (DECL_RTL (function), 0); + tmp = gen_rtx_MEM (QImode, fnaddr); + tmp = gen_rtx_CALL (VOIDmode, tmp, const0_rtx); tmp = emit_call_insn (tmp); SIBLING_CALL_P (tmp) = 1; }