When -fPIE is enabled (by default), nonlocal_goto tests fail because
ira drops reg equivalences for function invariants such as stack
addresses, and then, instead of the expected add instructions, we get
ldr to restore the pseudo holding the address, as it ends up living in
a stack slot across a call.

Tested o aarch64-linux-gnu with --enable-default-pie.  Ok to install?


for  gcc/testsuite/ChangeLog

        * gcc.target/aarch64/sme/nonlocal_goto_1.c: Accept ldr.
        * gcc.target/aarch64/sme/nonlocal_goto_2.c: Likewise.
        * gcc.target/aarch64/sme/nonlocal_goto_3.c: Likewise.
---
 .../gcc.target/aarch64/sme/nonlocal_goto_1.c       |    2 +-
 .../gcc.target/aarch64/sme/nonlocal_goto_2.c       |    2 +-
 .../gcc.target/aarch64/sme/nonlocal_goto_3.c       |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_1.c 
b/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_1.c
index 11578279b9287..de9702e744519 100644
--- a/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_1.c
@@ -17,7 +17,7 @@ void run(void (*)());
 **     ldr     x16, \1
 **     tbz     x16, 0, .*
 **     smstart sm
-**     add     x0, .*
+**     (add|ldr)       x0, .*
 **     ldr     x16, \1
 **     tbz     x16, 0, .*
 **     smstop  sm
diff --git a/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_2.c 
b/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_2.c
index 37dbcbae1a4f8..598db3cad38dd 100644
--- a/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_2.c
@@ -9,7 +9,7 @@ void run(void (*)());
 **     smstop  sm
 **     bl      [^\n]*[cC]ache[^\n]*
 **     smstart sm
-**     add     x0, .*
+**     (add|ldr)       x0, .*
 **     smstop  sm
 **     bl      run
 **     smstart sm
diff --git a/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_3.c 
b/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_3.c
index ae661653f3028..9aedd088d7807 100644
--- a/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_3.c
+++ b/gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_3.c
@@ -11,7 +11,7 @@ void run(void (*)());
 **     smstop  sm
 **     bl      [^\n]*[cC]ache[^\n]*
 **     smstart sm
-**     add     x0, .*
+**     (add|ldr)       x0, .*
 **     smstop  sm
 **     bl      run
 **     smstart sm

-- 
Alexandre Oliva, happy hacker            https://blog.lx.oliva.nom.br/
Free Software Activist     FSFLA co-founder     GNU Toolchain Engineer
More tolerance and less prejudice are key for inclusion and diversity.
Excluding neuro-others for not behaving ""normal"" is *not* inclusive!

Reply via email to