http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42522
Mikael Pettersson <mikpe at it dot uu.se> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mikpe at it dot uu.se
--- Comment #16 from Mikael Pettersson <mikpe at it dot uu.se> 2012-02-19
23:48:41 UTC ---
Since r171341 (a big complex optabs cleanup patch) trunk aka 4.7 generates
bar:
move.l 4(%sp),%a0
tst.b (%a0)
jne .L3
clr.l %d1
move.b 1(%a0),%d1
swap %d1
clr.w %d1
clr.l %d0
move.b 2(%a0),%d0
lsl.l #8,%d0
or.l %d1,%d0
or.b 3(%a0),%d0
moveq #8,%d1
cmp.l %d0,%d1
scs %d0
extb.l %d0
neg.l %d0
rts
.L3:
clr.l %d0
rts
for the m68k-elf target. (The code is much better for m68k-linux.)