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

            Bug ID: 125320
           Summary: riscv: broken assembly with -march=rv64gc_xtheadmemidx
                    -fstack-protector-strong -O2
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xry111 at gcc dot gnu.org
  Target Milestone: ---

void __gen_tempname(char *, int, int, int);
void tempnam() {
  char buf[4096];
  __gen_tempname(buf, 0, 0, 2);
}

is compiled to:

tempnam:
        addi    sp,sp,-48
        sd      s0,32(sp)
        sd      ra,40(sp)
        sd      s1,24(sp)
        li      a5,4096
        addi    sp,sp,-2048
        addi    sp,sp,-2048
        addi    a5,a5,8
        add     a4,sp,a5
        lui     s0,%hi(__stack_chk_guard)
        ld      a5, %lo(__stack_chk_guard)(s0)
        sd      a5, 0(a4)
        li      a5, 0
        addi    a0,sp,8
        li      a3,2
        li      a2,0
        li      a1,0
        call    __gen_tempname
        li      a5,4096
        addi    a5,a5,8
        ld      a4, sp,a5,0
        ld      a5, %lo(__stack_chk_guard)(s0)
        xor     a5, a4, a5
        li      a4, 0
        bne     a5,zero,.L5
        li      t0,4096
        add     sp,sp,t0
        ld      ra,40(sp)
        ld      s0,32(sp)
        ld      s1,24(sp)
        addi    sp,sp,48
        jr      ra
        call    __stack_chk_fail

"ld a4,sp,a5,0" is not a valid instruction.

Reply via email to