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.

Reply via email to