From 16d3dddc0913148d8f7b3dc5b0d560934f853031 Mon Sep 17 00:00:00 2001 From: Christoph Muellner Date: Thu, 24 May 2018 10:15:07 +0200 Subject: 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 --- gcc/config/aarch64/aarch64.c | 6 +----- gcc/testsuite/gcc.target/aarch64/indirect-thunk-1.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-2.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-3.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-4.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-5.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-6.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-1.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-2.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-3.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-4.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-5.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-attr-6.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-1.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-2.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-3.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-4.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-5.c | 3 +-- gcc/testsuite/gcc.target/aarch64/indirect-thunk-inline-6.c | 3 +-- 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" } } */ -- cgit v1.2.3