https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED |--- --- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> --- It's not fixed. On trunk we get: === flush_dcache_range: rlwinm 3,3,0,0,27 addi 4,4,15 subf 4,3,4 srwi. 9,4,4 beq 0,.L1 slwi 9,9,4 addi 9,9,-16 srwi 9,9,4 addi 9,9,1 mtctr 9 .p2align 4,,15 .L3: dcbf 0, 3 addi 3,3,16 bdnz .L3 sync .L1: blr === (-m32, edited a bit). The slwi/addi/srwi/addi is unnecessary.