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