737cff798a
Based on the last version from Alpine, but installed to /usr/gcc6 and with pretty much everything disabled except for the C compiler. We can probably throw out a lot of patches, and make the APKBUILD much smaller. But let's focus on making it possible to compile old kernels again first. There's still a lot to do for that, see #103.
1003 lines
52 KiB
Diff
1003 lines
52 KiB
Diff
From a34d0b92e2c81792bd1f27e872c4c97a2df6861c Mon Sep 17 00:00:00 2001
|
|
From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
|
Date: Mon, 26 Feb 2018 17:00:46 +0000
|
|
Subject: [PATCH 12/13] i386: Add TARGET_INDIRECT_BRANCH_REGISTER
|
|
|
|
For
|
|
|
|
---
|
|
struct C {
|
|
virtual ~C();
|
|
virtual void f();
|
|
};
|
|
|
|
void
|
|
f (C *p)
|
|
{
|
|
p->f();
|
|
p->f();
|
|
}
|
|
---
|
|
|
|
-mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates:
|
|
|
|
_Z1fP1C:
|
|
.LFB0:
|
|
.cfi_startproc
|
|
pushq %rbx
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 3, -16
|
|
movq (%rdi), %rax
|
|
movq %rdi, %rbx
|
|
jmp .LIND1
|
|
.LIND0:
|
|
pushq 16(%rax)
|
|
jmp __x86_indirect_thunk
|
|
.LIND1:
|
|
call .LIND0
|
|
movq (%rbx), %rax
|
|
movq %rbx, %rdi
|
|
popq %rbx
|
|
.cfi_def_cfa_offset 8
|
|
movq 16(%rax), %rax
|
|
jmp __x86_indirect_thunk_rax
|
|
.cfi_endproc
|
|
|
|
x86-64 is supposed to have asynchronous unwind tables by default, but
|
|
there is nothing that reflects the change in the (relative) frame
|
|
address after .LIND0. That region really has to be moved outside of
|
|
the .cfi_startproc/.cfi_endproc bracket.
|
|
|
|
This patch adds TARGET_INDIRECT_BRANCH_REGISTER to force indirect
|
|
branch via register whenever -mindirect-branch= is used. Now,
|
|
-mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates:
|
|
|
|
_Z1fP1C:
|
|
.LFB0:
|
|
.cfi_startproc
|
|
pushq %rbx
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 3, -16
|
|
movq (%rdi), %rax
|
|
movq %rdi, %rbx
|
|
movq 16(%rax), %rax
|
|
call __x86_indirect_thunk_rax
|
|
movq (%rbx), %rax
|
|
movq %rbx, %rdi
|
|
popq %rbx
|
|
.cfi_def_cfa_offset 8
|
|
movq 16(%rax), %rax
|
|
jmp __x86_indirect_thunk_rax
|
|
.cfi_endproc
|
|
|
|
so that "-mindirect-branch=thunk-extern" is equivalent to
|
|
"-mindirect-branch=thunk-extern -mindirect-branch-register", which is
|
|
used by Linux kernel.
|
|
|
|
gcc/
|
|
|
|
Backport from mainline
|
|
2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
PR target/84039
|
|
* config/i386/constraints.md (Bs): Replace
|
|
ix86_indirect_branch_register with
|
|
TARGET_INDIRECT_BRANCH_REGISTER.
|
|
(Bw): Likewise.
|
|
* config/i386/i386.md (indirect_jump): Likewise.
|
|
(tablejump): Likewise.
|
|
(*sibcall_memory): Likewise.
|
|
(*sibcall_value_memory): Likewise.
|
|
Peepholes of indirect call and jump via memory: Likewise.
|
|
(*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
|
|
(*sibcall_value_GOT_32): Likewise.
|
|
* config/i386/predicates.md (indirect_branch_operand): Likewise.
|
|
(GOT_memory_operand): Likewise.
|
|
(call_insn_operand): Likewise.
|
|
(sibcall_insn_operand): Likewise.
|
|
(GOT32_symbol_operand): Likewise.
|
|
* config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
|
|
|
|
gcc/testsuite/
|
|
|
|
Backport from mainline
|
|
2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
PR target/84039
|
|
* gcc.target/i386/indirect-thunk-1.c: Updated.
|
|
* gcc.target/i386/indirect-thunk-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-7.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-9.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-10.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-11.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-12.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-13.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-14.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-15.c: Likewise.
|
|
---
|
|
gcc/config/i386/constraints.md | 4 ++--
|
|
gcc/config/i386/i386.h | 5 ++++
|
|
gcc/config/i386/i386.md | 28 +++++++++++++---------
|
|
gcc/config/i386/predicates.md | 6 ++---
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 5 ++--
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 5 ++--
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 5 ++--
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 5 ++--
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-5.c | 6 +++--
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-6.c | 12 ++++++----
|
|
gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-attr-1.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-attr-2.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-attr-3.c | 3 +--
|
|
.../gcc.target/i386/indirect-thunk-attr-4.c | 3 +--
|
|
.../gcc.target/i386/indirect-thunk-attr-5.c | 9 ++++---
|
|
.../gcc.target/i386/indirect-thunk-attr-6.c | 9 ++++---
|
|
.../gcc.target/i386/indirect-thunk-attr-7.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-bnd-1.c | 6 ++---
|
|
.../gcc.target/i386/indirect-thunk-bnd-2.c | 6 ++---
|
|
.../gcc.target/i386/indirect-thunk-bnd-3.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-bnd-4.c | 7 +++---
|
|
.../gcc.target/i386/indirect-thunk-extern-1.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-extern-2.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-extern-3.c | 9 ++++---
|
|
.../gcc.target/i386/indirect-thunk-extern-4.c | 6 ++---
|
|
.../gcc.target/i386/indirect-thunk-extern-5.c | 6 +++--
|
|
.../gcc.target/i386/indirect-thunk-extern-6.c | 8 +++----
|
|
.../gcc.target/i386/indirect-thunk-extern-7.c | 5 ++--
|
|
.../gcc.target/i386/indirect-thunk-inline-1.c | 2 +-
|
|
.../gcc.target/i386/indirect-thunk-inline-2.c | 2 +-
|
|
.../gcc.target/i386/indirect-thunk-inline-3.c | 2 +-
|
|
.../gcc.target/i386/indirect-thunk-inline-4.c | 2 +-
|
|
.../gcc.target/i386/indirect-thunk-inline-5.c | 3 ++-
|
|
.../gcc.target/i386/indirect-thunk-inline-6.c | 3 ++-
|
|
.../gcc.target/i386/indirect-thunk-inline-7.c | 4 ++--
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 9 +++----
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 9 +++----
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 8 +++----
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 5 ++--
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 7 +++---
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 7 +++---
|
|
gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 13 ++++------
|
|
43 files changed, 128 insertions(+), 141 deletions(-)
|
|
|
|
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md
|
|
index 9204c8e8487..ef684a95497 100644
|
|
--- a/gcc/config/i386/constraints.md
|
|
+++ b/gcc/config/i386/constraints.md
|
|
@@ -172,7 +172,7 @@
|
|
|
|
(define_constraint "Bs"
|
|
"@internal Sibcall memory operand."
|
|
- (ior (and (not (match_test "ix86_indirect_branch_register"))
|
|
+ (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
|
(not (match_test "TARGET_X32"))
|
|
(match_operand 0 "sibcall_memory_operand"))
|
|
(and (match_test "TARGET_X32 && Pmode == DImode")
|
|
@@ -180,7 +180,7 @@
|
|
|
|
(define_constraint "Bw"
|
|
"@internal Call memory operand."
|
|
- (ior (and (not (match_test "ix86_indirect_branch_register"))
|
|
+ (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
|
(not (match_test "TARGET_X32"))
|
|
(match_operand 0 "memory_operand"))
|
|
(and (match_test "TARGET_X32 && Pmode == DImode")
|
|
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
|
|
index b34bc117c34..1816d710f4e 100644
|
|
--- a/gcc/config/i386/i386.h
|
|
+++ b/gcc/config/i386/i386.h
|
|
@@ -2676,6 +2676,11 @@ extern void debug_dispatch_window (int);
|
|
#define TARGET_RECIP_VEC_DIV ((recip_mask & RECIP_MASK_VEC_DIV) != 0)
|
|
#define TARGET_RECIP_VEC_SQRT ((recip_mask & RECIP_MASK_VEC_SQRT) != 0)
|
|
|
|
+
|
|
+#define TARGET_INDIRECT_BRANCH_REGISTER \
|
|
+ (ix86_indirect_branch_register \
|
|
+ || cfun->machine->indirect_branch_type != indirect_branch_keep)
|
|
+
|
|
#define IX86_HLE_ACQUIRE (1 << 16)
|
|
#define IX86_HLE_RELEASE (1 << 17)
|
|
|
|
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
|
|
index 857466a6361..6a6dc26799c 100644
|
|
--- a/gcc/config/i386/i386.md
|
|
+++ b/gcc/config/i386/i386.md
|
|
@@ -11805,7 +11805,7 @@
|
|
[(set (pc) (match_operand 0 "indirect_branch_operand"))]
|
|
""
|
|
{
|
|
- if (TARGET_X32 || ix86_indirect_branch_register)
|
|
+ if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER)
|
|
operands[0] = convert_memory_address (word_mode, operands[0]);
|
|
cfun->machine->has_local_indirect_jump = true;
|
|
})
|
|
@@ -11859,7 +11859,7 @@
|
|
OPTAB_DIRECT);
|
|
}
|
|
|
|
- if (TARGET_X32 || ix86_indirect_branch_register)
|
|
+ if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER)
|
|
operands[0] = convert_memory_address (word_mode, operands[0]);
|
|
cfun->machine->has_local_indirect_jump = true;
|
|
})
|
|
@@ -12029,7 +12029,10 @@
|
|
(match_operand:SI 0 "register_no_elim_operand" "U")
|
|
(match_operand:SI 1 "GOT32_symbol_operand"))))
|
|
(match_operand 2))]
|
|
- "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)"
|
|
+ "!TARGET_MACHO
|
|
+ && !TARGET_64BIT
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
+ && SIBLING_CALL_P (insn)"
|
|
{
|
|
rtx fnaddr = gen_rtx_PLUS (Pmode, operands[0], operands[1]);
|
|
fnaddr = gen_const_mem (Pmode, fnaddr);
|
|
@@ -12048,7 +12051,7 @@
|
|
[(call (mem:QI (match_operand:W 0 "memory_operand" "m"))
|
|
(match_operand 1))
|
|
(unspec [(const_int 0)] UNSPEC_PEEPSIB)]
|
|
- "!TARGET_X32 && !ix86_indirect_branch_register"
|
|
+ "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER"
|
|
"* return ix86_output_call_insn (insn, operands[0]);"
|
|
[(set_attr "type" "call")])
|
|
|
|
@@ -12058,7 +12061,7 @@
|
|
(call (mem:QI (match_dup 0))
|
|
(match_operand 3))]
|
|
"!TARGET_X32
|
|
- && !ix86_indirect_branch_register
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
&& SIBLING_CALL_P (peep2_next_insn (1))
|
|
&& !reg_mentioned_p (operands[0],
|
|
CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))"
|
|
@@ -12073,7 +12076,7 @@
|
|
(call (mem:QI (match_dup 0))
|
|
(match_operand 3))]
|
|
"!TARGET_X32
|
|
- && !ix86_indirect_branch_register
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
&& SIBLING_CALL_P (peep2_next_insn (2))
|
|
&& !reg_mentioned_p (operands[0],
|
|
CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))"
|
|
@@ -12171,7 +12174,7 @@
|
|
(match_operand:W 1 "memory_operand"))
|
|
(set (pc) (match_dup 0))]
|
|
"!TARGET_X32
|
|
- && !ix86_indirect_branch_register
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
&& peep2_reg_dead_p (2, operands[0])"
|
|
[(set (pc) (match_dup 1))])
|
|
|
|
@@ -12229,7 +12232,10 @@
|
|
(match_operand:SI 1 "register_no_elim_operand" "U")
|
|
(match_operand:SI 2 "GOT32_symbol_operand"))))
|
|
(match_operand 3)))]
|
|
- "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)"
|
|
+ "!TARGET_MACHO
|
|
+ && !TARGET_64BIT
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
+ && SIBLING_CALL_P (insn)"
|
|
{
|
|
rtx fnaddr = gen_rtx_PLUS (Pmode, operands[1], operands[2]);
|
|
fnaddr = gen_const_mem (Pmode, fnaddr);
|
|
@@ -12250,7 +12256,7 @@
|
|
(call (mem:QI (match_operand:W 1 "memory_operand" "m"))
|
|
(match_operand 2)))
|
|
(unspec [(const_int 0)] UNSPEC_PEEPSIB)]
|
|
- "!TARGET_X32 && !ix86_indirect_branch_register"
|
|
+ "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER"
|
|
"* return ix86_output_call_insn (insn, operands[1]);"
|
|
[(set_attr "type" "callv")])
|
|
|
|
@@ -12261,7 +12267,7 @@
|
|
(call (mem:QI (match_dup 0))
|
|
(match_operand 3)))]
|
|
"!TARGET_X32
|
|
- && !ix86_indirect_branch_register
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
&& SIBLING_CALL_P (peep2_next_insn (1))
|
|
&& !reg_mentioned_p (operands[0],
|
|
CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))"
|
|
@@ -12278,7 +12284,7 @@
|
|
(call (mem:QI (match_dup 0))
|
|
(match_operand 3)))]
|
|
"!TARGET_X32
|
|
- && !ix86_indirect_branch_register
|
|
+ && !TARGET_INDIRECT_BRANCH_REGISTER
|
|
&& SIBLING_CALL_P (peep2_next_insn (2))
|
|
&& !reg_mentioned_p (operands[0],
|
|
CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))"
|
|
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md
|
|
index d1f0a7dbf61..5f8a98faead 100644
|
|
--- a/gcc/config/i386/predicates.md
|
|
+++ b/gcc/config/i386/predicates.md
|
|
@@ -593,7 +593,7 @@
|
|
;; Test for a valid operand for indirect branch.
|
|
(define_predicate "indirect_branch_operand"
|
|
(ior (match_operand 0 "register_operand")
|
|
- (and (not (match_test "ix86_indirect_branch_register"))
|
|
+ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
|
(not (match_test "TARGET_X32"))
|
|
(match_operand 0 "memory_operand"))))
|
|
|
|
@@ -637,7 +637,7 @@
|
|
(ior (match_test "constant_call_address_operand
|
|
(op, mode == VOIDmode ? mode : Pmode)")
|
|
(match_operand 0 "call_register_no_elim_operand")
|
|
- (and (not (match_test "ix86_indirect_branch_register"))
|
|
+ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
|
(ior (and (not (match_test "TARGET_X32"))
|
|
(match_operand 0 "memory_operand"))
|
|
(and (match_test "TARGET_X32 && Pmode == DImode")
|
|
@@ -648,7 +648,7 @@
|
|
(ior (match_test "constant_call_address_operand
|
|
(op, mode == VOIDmode ? mode : Pmode)")
|
|
(match_operand 0 "register_no_elim_operand")
|
|
- (and (not (match_test "ix86_indirect_branch_register"))
|
|
+ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
|
(ior (and (not (match_test "TARGET_X32"))
|
|
(match_operand 0 "sibcall_memory_operand"))
|
|
(and (match_test "TARGET_X32 && Pmode == DImode")
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
|
|
index 60d09881a99..6e94d2c4865 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
|
|
@@ -11,9 +11,8 @@ male_indirect_jump (long offset)
|
|
dispatch(offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
|
|
index aac75163794..3c467078964 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
|
|
@@ -11,9 +11,8 @@ male_indirect_jump (long offset)
|
|
dispatch[offset](offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
|
|
index 9e24a385387..2c7fb52b59d 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
|
|
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
|
|
index 127b5d94523..0d3f895009d 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
|
|
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
|
|
index fcaa18d10b7..fb26c005e80 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
|
|
@@ -9,8 +9,10 @@ foo (void)
|
|
bar ();
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
+/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
|
|
index e4649283d10..aa03fbd8446 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
|
|
@@ -10,9 +10,13 @@ foo (void)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
|
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
|
+/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 { target x32 } } } */
|
|
+/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
|
|
+/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
+/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
/* { dg-final { scan-assembler {\tlfence} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
|
|
index 17c2d0faf88..3c72036dbaf 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
|
|
@@ -35,9 +35,8 @@ bar (int i)
|
|
}
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
|
|
index 9194ccf3cbc..7106407b83d 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
|
|
@@ -14,9 +14,8 @@ male_indirect_jump (long offset)
|
|
dispatch(offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
|
|
index e51f261a612..27c7e5b029b 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
|
|
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
|
dispatch[offset](offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
|
|
index 4aeec1833cd..89a2bac8403 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
|
|
@@ -14,10 +14,9 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
/* { dg-final { scan-assembler {\tlfence} } } */
|
|
/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
|
|
index ac0e5999f63..3eb83c3779a 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
|
|
@@ -13,10 +13,9 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
/* { dg-final { scan-assembler {\tlfence} } } */
|
|
/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
|
|
index 573cf1ef09e..0098dd1133d 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
|
|
@@ -14,9 +14,8 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
|
|
index b2b37fc6e2e..ece8de15a4b 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
|
|
@@ -13,9 +13,8 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
|
|
index 4a43e199931..d53fc887dcc 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
|
|
@@ -36,9 +36,8 @@ bar (int i)
|
|
}
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
|
|
index ac84ab623fa..73d16baddc7 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
|
|
@@ -10,9 +10,9 @@ foo (void)
|
|
dispatch (buf);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */
|
|
-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */
|
|
+/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "bnd ret" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
|
|
index ce655e8be1c..856751ac224 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
|
|
@@ -11,10 +11,8 @@ foo (void)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */
|
|
-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */
|
|
-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "bnd ret" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
|
|
index d34485a0010..42312f65588 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
|
|
@@ -10,8 +10,9 @@ foo (void)
|
|
bar (buf);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
+/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */
|
|
+/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "bnd ret" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
|
|
index 0e19830de4d..c8ca102c8df 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
|
|
@@ -11,10 +11,9 @@ foo (void)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */
|
|
-/* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 2 } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
+/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 1 } } */
|
|
/* { dg-final { scan-assembler "bnd ret" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
/* { dg-final { scan-assembler {\tlfence} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
|
|
index 579441f250e..c09dd0afd2d 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
|
|
@@ -11,9 +11,8 @@ male_indirect_jump (long offset)
|
|
dispatch(offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
|
|
index c92e6f2b02d..826425a5115 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
|
|
@@ -11,9 +11,8 @@ male_indirect_jump (long offset)
|
|
dispatch[offset](offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
|
|
index d9964c25bbd..385626850a2 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
|
|
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
|
|
index d4dca4dc5fe..1ae49b137ca 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
|
|
@@ -12,9 +12,7 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
|
|
index 5c07e02df6a..53282390977 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
|
|
@@ -9,8 +9,10 @@ foo (void)
|
|
bar ();
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
+/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
|
|
index 3eb440693a0..8ae43482d0c 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
|
|
@@ -10,8 +10,8 @@ foo (void)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 } } */
|
|
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
+/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
|
|
index aece9383697..2b9a33e93dc 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
|
|
@@ -35,9 +35,8 @@ bar (int i)
|
|
}
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
|
|
index 3aba5e8c81f..869d9040838 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
|
|
@@ -11,7 +11,7 @@ male_indirect_jump (long offset)
|
|
dispatch(offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
|
|
index 0f0181d6672..c5c16ed8bd8 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
|
|
@@ -11,7 +11,7 @@ male_indirect_jump (long offset)
|
|
dispatch[offset](offset);
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
|
|
index 2eef6f35a75..4a63ebed8ab 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
|
|
@@ -12,7 +12,7 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
|
|
index e825a10f14c..a395ffca018 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
|
|
@@ -12,7 +12,7 @@ male_indirect_jump (long offset)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
|
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
|
|
index c6d77e10352..21cbfd39582 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
|
|
@@ -9,7 +9,8 @@ foo (void)
|
|
bar ();
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
+/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
|
|
index 6454827b780..d1300f18dc7 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
|
|
@@ -10,7 +10,8 @@ foo (void)
|
|
return 0;
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
|
|
+/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
|
|
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
|
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
|
|
index c67066cf197..ea009245a58 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
|
|
@@ -35,8 +35,8 @@ bar (int i)
|
|
}
|
|
}
|
|
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler {\tpause} } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
|
|
index e6fea84a4d9..af9023af613 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
|
|
@@ -15,9 +15,6 @@ foo (void)
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
|
|
/* { dg-final { scan-assembler-times {\tpause} 2 } } */
|
|
/* { dg-final { scan-assembler-times {\tlfence} 2 } } */
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
|
|
index e239ec4542f..ba467c59b36 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
|
|
@@ -15,9 +15,6 @@ foo (void)
|
|
/* { dg-final { scan-assembler-times {\tlfence} 1 } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-12.c b/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
|
|
index fa3181303c9..43e57cac2c3 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
|
|
@@ -15,8 +15,6 @@ foo (void)
|
|
/* { dg-final { scan-assembler-times {\tlfence} 1 } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
|
|
index fd5b41fdd3f..55f156c4376 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
|
|
@@ -14,9 +14,8 @@ foo (void)
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
|
|
/* { dg-final { scan-assembler-times {\tpause} 2 } } */
|
|
/* { dg-final { scan-assembler-times {\tlfence} 2 } } */
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */
|
|
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
|
-/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
|
|
index d606373ead1..1c790436a53 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
|
|
@@ -16,7 +16,6 @@ foo (void)
|
|
/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
|
|
index 75e45e226b8..58aba319cba 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
|
|
@@ -16,7 +16,6 @@ foo (void)
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
|
/* { dg-final { scan-assembler-times {\tlfence} 1 } } */
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
|
index d1db41cc128..d2df8b874e0 100644
|
|
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
|
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
|
@@ -14,11 +14,8 @@ foo (void)
|
|
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
|
/* { dg-final { scan-assembler "__x86_indirect_thunk:" } } */
|
|
-/* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times {\tpause} 2 { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-times {\tlfence} 2 { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
|
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
|
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
|
|
+/* { dg-final { scan-assembler-times {\tpause} 2 } } */
|
|
+/* { dg-final { scan-assembler-times {\tlfence} 2 } } */
|
|
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
|
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
--
|
|
2.16.3
|
|
|