https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288
Bernd Schmidt <bernds at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bernds at gcc dot gnu.org --- Comment #5 from Bernd Schmidt <bernds at gcc dot gnu.org> --- (In reply to Christophe Leroy from comment #0) > The following section is just useless: (shift left 4 bits, remove 16, shift > right 4 bits, add 1) > c000d984: 55 24 20 36 rlwinm r4,r9,4,0,27 > c000d988: 39 24 ff f0 addi r9,r4,-16 > c000d98c: 55 29 e1 3e rlwinm r9,r9,28,4,31 > c000d990: 39 29 00 01 addi r9,r9,1 Are you suggesting just removing these? That would not produce the same value in all cases - consider zero as an input: ((0 << 4) - 16) >> 4 = 0xfffffff, add one and you get 0x10000000.