[Bug target/118885] New: gcc.target/i386/pr90579.c fails with PIE
sjames at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Feb 15 04:10:39 GMT 2025
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.
More information about the Gcc-bugs
mailing list