https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118885
Bug ID: 118885 Summary: gcc.target/i386/pr90579.c fails with PIE Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: testsuite-fail Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: sjames at gcc dot gnu.org Target Milestone: --- ``` --- a/x86_64-pc-linux-gnu/15/x86_64-pc-linux-gnu.xfail +++ b/x86_64-pc-linux-gnu/15/x86_64-pc-linux-gnu.xfail @@ -616,6 +616,10 @@ Running gcc:/gcc/testsuite/gcc.target/i386/i386.exp ... FAIL: gcc.target/i386/cet-sjlj-3.c scan-assembler-times call\t_?longjmp 1 FAIL: gcc.target/i386/cet-sjlj-5.c scan-assembler-times call\t_?longjmp 1 FAIL: gcc.target/i386/pr101950-2.c scan-assembler-times \txor[ql]\t 2 +FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+16 +FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+24 +FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+32 +FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+40 ``` ``` $ diff -u <(gcc -S -o - pr90579.c -O3 -mavx2 -mfpmath=sse -fno-PIE) <(gcc -S -o - pr90579.c -O3 -mavx2 -mfpmath=sse -fPIE) --- /dev/fd/63 2025-02-15 04:10:02.354468660 +0000 +++ /dev/fd/62 2025-02-15 04:10:02.359468708 +0000 @@ -7,18 +7,19 @@ .LFB0: .cfi_startproc movslq %edi, %rdi + leaq a(%rip), %rax vbroadcastsd %xmm0, %ymm1 + vmulpd (%rax,%rdi,8), %ymm1, %ymm1 vmovddup %xmm0, %xmm0 - vmulpd a(,%rdi,8), %ymm1, %ymm1 vmovupd %ymm1, r(%rip) + vmulpd 32(%rax,%rdi,8), %xmm0, %xmm0 vunpckhpd %xmm1, %xmm1, %xmm2 - vmulpd a+32(,%rdi,8), %xmm0, %xmm0 - vmovupd %xmm0, r+32(%rip) + vmovupd %xmm0, 32+r(%rip) vxorpd %xmm0, %xmm0, %xmm0 - vaddsd r+40(%rip), %xmm0, %xmm0 - vaddsd r+32(%rip), %xmm0, %xmm0 - vaddsd r+24(%rip), %xmm0, %xmm0 - vaddsd r+16(%rip), %xmm0, %xmm0 + vaddsd 40+r(%rip), %xmm0, %xmm0 + vaddsd 32+r(%rip), %xmm0, %xmm0 + vaddsd 24+r(%rip), %xmm0, %xmm0 + vaddsd 16+r(%rip), %xmm0, %xmm0 vaddsd %xmm0, %xmm2, %xmm0 vaddsd %xmm0, %xmm1, %xmm0 vzeroupper ``` ``` /* Verify we end up with scalar loads from r for the final sum. */ /* { dg-final { scan-assembler "vaddsd\tr\\\+40" } } */ /* { dg-final { scan-assembler "vaddsd\tr\\\+32" } } */ /* { dg-final { scan-assembler "vaddsd\tr\\\+24" } } */ /* { dg-final { scan-assembler "vaddsd\tr\\\+16" } } */ ``` The pattern doesn't match the reversed order for PIE.