http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46285
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2010.11.03 03:24:23 CC| |hjl.tools at gmail dot com, | |ubizjak at gmail dot com Ever Confirmed|0 |1 --- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2010-11-03 03:24:23 UTC --- -fsplit-stack generates call after reload is completed. We can do --- diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index afecc89..ba1e4fc 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -21540,10 +21540,16 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1 , else avx256 = call_no_avx256; - unspec = gen_rtx_UNSPEC (VOIDmode, - gen_rtvec (1, GEN_INT (avx256)), - UNSPEC_CALL_NEEDS_VZEROUPPER); - call = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, call, unspec)); + if (reload_completed) + emit_insn (gen_avx_vzeroupper (GEN_INT (avx256))); + else + { + unspec = gen_rtx_UNSPEC (VOIDmode, + gen_rtvec (1, GEN_INT (avx256)), + UNSPEC_CALL_NEEDS_VZEROUPPER); + call = gen_rtx_PARALLEL (VOIDmode, + gen_rtvec (2, call, unspec)); + } } call = emit_call_insn (call); ---