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?

Reply via email to