https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80155
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- asm difference -fno-code-hoisting (-) against patch (+) shows --- t.s 2017-03-23 13:04:11.010514228 +0100 +++ t.s.ok 2017-03-23 13:04:05.882432743 +0100 @@ -26,9 +26,9 @@ ldrb r3, [r4] @ zero_extendqisi2 cbz r3, .L2 .L4: - bl fn2 - ldrb r3, [r4, #1] @ zero_extendqisi2 adds r4, r4, #1 + bl fn2 + ldrb r3, [r4] @ zero_extendqisi2 cmp r3, #0 bne .L4 .L2: which probably is better as it only keeps r4 live over the call? but it adds a dependence between the load from r4 and the add.