summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Muellner <christoph.muellner@theobroma-systems.com>2018-05-24 10:15:07 +0200
committerChristoph Muellner <christoph.muellner@theobroma-systems.com>2018-05-24 10:15:07 +0200
commit16d3dddc0913148d8f7b3dc5b0d560934f853031 (patch)
tree2a0ee1af792ed465b1a89e1e0affdbb7b753745a
parent050f1d28b1de094b3112c0d5331322f109561713 (diff)
aarch64: Optimize retpoline (Spectre-V2 mitigation) for aarch64.
Merging the adrp/add instruction pair to a single adr instruction. The actual retpoline instruction sequence, which prevents speculative indirect branches looks like this now: str x30, [sp, #-16]! bl 101f 100: //speculation trap wfe b 100b 101: //do ROP adr x30, 102f ret 102: //non-spec code ldr x30, [sp], #16 Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
-rw-r--r--gcc/config/aarch64/aarch64.c6
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-1.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-2.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-3.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-4.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-5.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-6.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-1.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-2.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-3.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-4.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-5.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-6.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-1.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-2.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-3.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-4.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-5.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-6.c3
19 files changed, 19 insertions, 41 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 1cea7c7aaf51..3a2c838a3ff0 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -12724,7 +12724,6 @@ indirect_thunk_name (char name[32], int regno)
push lr
bl L2
L1: wfe
- dsb sy
b L1
L2: mov lr, &L3
ret
@@ -12765,10 +12764,7 @@ output_indirect_thunk (bool save_lr)
/* L2: lr=&L3; ret */
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
- fputs ("\tadrp\tx30, ", asm_out_file);
- assemble_name_raw (asm_out_file, indirectlabel3);
- fputc ('\n', asm_out_file);
- fputs ("\tadd\tx30, x30, :lo12:", asm_out_file);
+ fputs ("\tadr\tx30, ", asm_out_file);
assemble_name_raw (asm_out_file, indirectlabel3);
fputc ('\n', asm_out_file);
fputs ("\tret\n", asm_out_file);
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-1.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-1.c
index 256aee2e1a2a..c5bd82a56d90 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-1.c
@@ -19,8 +19,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-2.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-2.c
index 8e6dc31171ad..0107bbd9559d 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-2.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-2.c
@@ -20,8 +20,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-3.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-3.c
index 2c9938244b99..d9b5cfed19b2 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-3.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-3.c
@@ -20,8 +20,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-4.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-4.c
index d09c37d8045e..b89f333457c7 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-4.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-4.c
@@ -21,8 +21,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-5.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-5.c
index d93217554ec1..eb7ccda2ae66 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-5.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-5.c
@@ -17,8 +17,7 @@ foo (void)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x0" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-6.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-6.c
index e54fc0d272a3..4c21735dc3c8 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-6.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-6.c
@@ -18,8 +18,7 @@ foo (void)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x0" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-1.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-1.c
index a2ae84af6c23..2485e9248910 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-1.c
@@ -22,8 +22,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-2.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-2.c
index 0f3b4d55afc7..8e9425294b6e 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-2.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-2.c
@@ -21,8 +21,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-3.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-3.c
index 7ff66e8d0fc0..47005c96d098 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-3.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-3.c
@@ -20,8 +20,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "blr\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-4.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-4.c
index 0734295ae89b..4ad462f7efa2 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-4.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-4.c
@@ -20,8 +20,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "blr\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-5.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-5.c
index 916288421cfc..178ce26ff25f 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-5.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-5.c
@@ -21,5 +21,4 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler-not "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler-not "wfe" } } */
/* { dg-final { scan-assembler-not "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler-not "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler-not "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler-not "adr\[ \t\]*x30, .LIND2" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-6.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-6.c
index 34649e213705..75964a058391 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-6.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-6.c
@@ -21,5 +21,4 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler-not "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler-not "wfe" } } */
/* { dg-final { scan-assembler-not "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler-not "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler-not "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler-not "adr\[ \t\]*x30, .LIND2" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-1.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-1.c
index b70f07131202..4c94efc8121f 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-1.c
@@ -17,8 +17,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-2.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-2.c
index e58e4ad32c73..3c5c263b5e6f 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-2.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-2.c
@@ -18,8 +18,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-3.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-3.c
index a253fa20acea..cd09d78b082b 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-3.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-3.c
@@ -18,8 +18,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "blr\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-4.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-4.c
index 7061da768a82..45b33ac9c02c 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-4.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-4.c
@@ -19,8 +19,7 @@ male_indirect_jump (long offset)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "blr\[ \t\]*x1" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-5.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-5.c
index 7945fd184802..28b4c87b80af 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-5.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-5.c
@@ -15,8 +15,7 @@ foo (void)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "br\[ \t\]*x0" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-6.c b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-6.c
index 556aa58be559..9cedefadd8d6 100644
--- a/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-6.c
+++ b/gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-6.c
@@ -16,8 +16,7 @@ foo (void)
/* { dg-final { scan-assembler "bl\[ \t\]*\.LIND1" } } */
/* { dg-final { scan-assembler "wfe" } } */
/* { dg-final { scan-assembler "b\[ \t\]*\.LIND0" } } */
-/* { dg-final { scan-assembler "adrp\[ \t\]*x30, .LIND2" } } */
-/* { dg-final { scan-assembler "add\[ \t\]*x30, x30, :lo12:.LIND2" } } */
+/* { dg-final { scan-assembler "adr\[ \t\]*x30, .LIND2" } } */
/* { dg-final { scan-assembler "ret" } } */
/* { dg-final { scan-assembler "ldr\[ \t\]*x30, \\\[sp\\\], #16" } } */
/* { dg-final { scan-assembler "blr\[ \t\]*x0" } } */