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.