https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110791
Wilco <wilco at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wilco at gcc dot gnu.org --- Comment #4 from Wilco <wilco at gcc dot gnu.org> --- Simpler example: void f(void); void bug (char *path, char *p) { while( p > path && p[-1] == '/' ) p--; if (p < path) f(); } bug: subs r3, r1, r0 cmp r0, r1 add r3, r3, #1 bhi .L7 adds r0, r0, #1 bne .L5 .L7: movs r3, #1 .L5: subs r3, r3, #1 bne .L2 bcc .L3 ** this is obviously never taken bx lr .L2: ldrb r2, [r1, #-1]! @ zero_extendqisi2 cmp r2, #47 beq .L5 bx lr .L3: b f