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

--- Comment #27 from Felix Fietkau <nbd at nbd dot name> ---
On the original test case, it generates this code:

00400690 <mytest>:
  400690:       8c830008        lw      v1,8(a0)
  400694:       24020001        li      v0,1
  400698:       10620011        beq     v1,v0,4006e0 <mytest+0x50>
  40069c:       00000000        nop
  4006a0:       8c830000        lw      v1,0(a0)
  4006a4:       00000000        nop
  4006a8:       28630002        slti    v1,v1,2
  4006ac:       1060000a        beqz    v1,4006d8 <mytest+0x48>
  4006b0:       00000000        nop
  4006b4:       8c82000c        lw      v0,12(a0)
  4006b8:       00000000        nop
  4006bc:       8c420000        lw      v0,0(v0)
  4006c0:       00000000        nop
  4006c4:       00a2182b        sltu    v1,a1,v0
  4006c8:       14600007        bnez    v1,4006e8 <mytest+0x58>
  4006cc:       00000000        nop
  4006d0:       0045102b        sltu    v0,v0,a1
  4006d4:       00021023        negu    v0,v0
  4006d8:       03e00008        jr      ra
  4006dc:       00000000        nop
  4006e0:       03e00008        jr      ra
  4006e4:       2402ffff        li      v0,-1
  4006e8:       03e00008        jr      ra
  4006ec:       24020001        li      v0,1

It looks to me like it's generating lots of useless nop instructions after lw

Reply via email to