[Bug target/52323] i386: gcse runs amok with pic-addresses

steven at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 9 22:16:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52323

--- Comment #4 from Steven Bosscher <steven at gcc dot gnu.org> 2012-10-09 22:16:34 UTC ---
IMHO -fgcse should just be disabled on ix86.

Index: i386.c
===================================================================
--- i386.c    (revision 192273)
+++ i386.c    (working copy)
@@ -3264,6 +3264,15 @@ ix86_option_override_internal (bool main
   SUBSUBTARGET_OVERRIDE_OPTIONS;
 #endif

+  /* RTL lazy code motion (-fgcse) causes nothing but trouble on
+     non-X32 32-bits targets.  Most profitable code transformation
+     opportunities have already been performed by GIMPLE PRE.  The
+     remaining cases at the RTL stage are address arithmetic exprs
+     in loops, and loop-invariant.c handles those much better than
+     lazy code motion.  */
+  if (! (TARGET_X32 || TARGET_64BIT))
+    flag_gcse = 0;
+
   /* -fPIC is the default for x86_64.  */
   if (TARGET_MACHO && TARGET_64BIT)
     flag_pic = 2;


Patch needs a foster parent, I don't care enough about old 32-bits i386 :-)



More information about the Gcc-bugs mailing list