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);
---

Reply via email to