This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/50176] [4.7 Regression] 4.7 generates spill-fill dealing with char->int conversion


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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization

--- Comment #6 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-08-29 13:50:56 UTC ---
It performs perfectly sensible optimizations:

@@ -91,11 +83,9 @@
   y_33 = (int) D.2055_32;
   D.2056_34 = inptr1_19 + col_5;
   D.2057_35 = *D.2056_34;
-  cb_36 = (int) D.2057_35;
   D.2058_37 = inptr2_24 + col_5;
   D.2059_38 = *D.2058_37;
-  cr_39 = (int) D.2059_38;
-  cr.0_40 = (unsigned int) cr_39;
+  cr.0_40 = (unsigned int) D.2059_38;
...
@@ -104,12 +94,11 @@
   D.2066_48 = range_limit_47(D) + D.2065_46;
   D.2067_49 = *D.2066_48;
   *outptr_4 = D.2067_49;
-  D.2068_50 = outptr_4 + 1;
-  cb.1_51 = (unsigned int) cb_36;
+  cb.1_51 = (unsigned int) D.2057_35;
   D.2070_52 = cb.1_51 * 4;
   D.2071_54 = Cbgtab_53(D) + D.2070_52;
   D.2072_55 = *D.2071_54;
-  cr.0_56 = (unsigned int) cr_39;
+  cr.0_56 = (unsigned int) D.2059_38;
   D.2061_57 = cr.0_56 * 4;
   D.2073_59 = Crgtab_58(D) + D.2061_57;
   D.2074_60 = *D.2073_59;

This seems to be at most a register allocation or target issue.

What it does is change (unsinged)(int)*load to (unsigned)*load,
eventually enlarging life-ranges (didn't double-check that).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]