https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71310

--- Comment #3 from Anton Blanchard <anton at samba dot org> ---
Another case found in the kernel:

struct mmu_gather {
        long end;
        int fullmm : 1;
};

void __tlb_reset_range(struct mmu_gather *p1)
{
        if (p1->fullmm)
                p1->end = 0;
}

void tlb_gather_mmu(struct mmu_gather *p1)
{
        p1->fullmm = 1;
        __tlb_reset_range(p1);
}

  30:   08 00 23 89     lbz     r9,8(r3)
  34:   01 00 29 61     ori     r9,r9,1
  38:   08 00 23 99     stb     r9,8(r3)
  3c:   00 00 42 60     ori     r2,r2,0
  40:   08 00 23 e9     ld      r9,8(r3)
  44:   01 00 2a 71     andi.   r10,r9,1
  48:   0c 00 82 41     beq     54 <tlb_gather_mmu+0x24>
  4c:   00 00 20 39     li      r9,0
  50:   00 00 23 f9     std     r9,0(r3)
  54:   20 00 80 4e     blr

Reply via email to