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