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

Reply via email to