https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119765
Bug ID: 119765
Summary: FAIL: gcc.target/i386/amd64-abi-9.c on Windows
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: nightstrike at gmail dot com
Target Milestone: ---
The test gcc.target/i386/amd64-abi-9.c fails on at least x86_64-w64-mingw-w64
due to the xorl instruction not being found:
FAIL: gcc.target/i386/amd64-abi-9.c scan-assembler-times xorl[\\t ]*\\%eax,[\\t
]*%eax 2
This is the asm generated on the same host, same compiler source, but for
x86_64 linux:
.file "amd64-abi-9.c"
.text
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "%d"
.text
.p2align 4
.globl test1
.type test1, @function
test1:
.LFB0:
.cfi_startproc
movl $20, %esi
movl $.LC0, %edi
xorl %eax, %eax
jmp foo
.cfi_endproc
.LFE0:
.size test1, .-test1
.p2align 4
.globl test2
.type test2, @function
test2:
.LFB1:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
xorl %eax, %eax
movl $20, %esi
movl $.LC0, %edi
call foo
movl $3, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE1:
.size test2, .-test2
.section .note.GNU-stack,"",@progbits
On the other hand, this is the asm generated for x86_64-w64-mingw32:
.file "amd64-abi-9.c"
.text
.section .rdata,"dr"
.LC0:
.ascii "%d\0"
.text
.p2align 4
.globl test1
.def test1; .scl 2; .type 32; .endef
.seh_proc test1
test1:
.seh_endprologue
movl $20, %edx
leaq .LC0(%rip), %rcx
jmp foo
.seh_endproc
.p2align 4
.globl test2
.def test2; .scl 2; .type 32; .endef
.seh_proc test2
test2:
subq $40, %rsp
.seh_stackalloc 40
.seh_endprologue
movl $20, %edx
leaq .LC0(%rip), %rcx
call foo
movl $3, %eax
addq $40, %rsp
ret
.seh_endproc
.def foo; .scl 2; .type 32; .endef
Is this just a matter of needing to adjust the test, or are we generating
incorrect instructions?