------- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-20 06:37 ------- The corresponding asm for the tcb: cmpw cr7,r3,r4 mr r11,r3 li r10,0 li r3,1 beqlr- cr7 lwz r0,0(r11) lwz r2,0(r4) slwi r9,r0,2 cmpw cr7,r2,r0 ble- cr7,L7 lwz r2,4(r4) lwzx r0,r9,r2 xor r10,r11,r0 subfic r2,r10,0 adde r10,r2,r10 L7: mr r3,r10 blr
the mainline (which is much worse): cmpw cr7,r3,r4 li r10,0 beq- cr7,L2 lwz r0,0(r3) li r11,1 lwz r2,0(r4) slwi r9,r0,2 cmpw cr7,r2,r0 bgt- cr7,L12 L4: li r11,0 L7: cmpwi cr7,r11,0 bne- cr7,L2 mr r3,r10 blr L12: lwz r2,4(r4) lwzx r0,r9,r2 cmpw cr7,r3,r0 bne+ cr7,L4 b L7 L2: li r10,1 mr r3,r10 blr -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18576