------- Comment #5 from mikpe at it dot uu dot se  2010-08-26 21:13 -------
The code size regression on ARM is caused by r146817, Matz' expand from SSA
patch: http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg01459.html

Here's the diff in the assembly code generated by a cross to
armv5tel-linux-gnueabi, with -Os -S, for r146816 and r146817:

--- pr45316.s-r146816   2010-08-26 23:00:18.000000000 +0200
+++ pr45316.s-r146817   2010-08-26 23:03:24.000000000 +0200
@@ -17,8 +17,13 @@
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
-       mov     r0, r0, lsr #10
-       and     r0, r0, #1
+       mov     r2, #1024
+       mov     r3, #0
+       and     r2, r2, r0
+       and     r3, r3, r1
+       orrs    r1, r2, r3
+       moveq   r0, #0
+       movne   r0, #1
        bx      lr
        .size   foo, .-foo
        .ident  "GCC: (GNU) 4.5.0 20090426 (experimental)"

My cross was configured:
../gcc-4.5-r146817/configure --target=armv5tel-unknown-linux-gnueabi
--with-arch=armv5te --with-tune=xscale --disable-plugin --disable-lto
--disable-nls --disable-shared --disable-libmudflap --disable-multilib
--enable-threads=posix --enable-checking=release --enable-languages=c


-- 

mikpe at it dot uu dot se changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |matz at gcc dot gnu dot org


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

Reply via email to