| From 7ba192d11a43d24ce427a3dfce0ad0592bd52830 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/12] 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 |
| 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 |
| 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. |
| |
| Upstream-Status: Pending |
| |
| Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> |
| |
| --- |
| 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 9204c8e..ef684a9 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 b34bc11..1816d71 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 857466a..6a6dc26 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 d1f0a7d..5f8a98f 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 60d0988..6e94d2c 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 aac7516..3c46707 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 9e24a38..2c7fb52 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 127b5d9..0d3f895 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 fcaa18d..fb26c00 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 e464928..aa03fbd 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 17c2d0f..3c72036 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 9194ccf..7106407 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 e51f261..27c7e5b 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 4aeec18..89a2bac 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 ac0e599..3eb83c3 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 573cf1e..0098dd1 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 b2b37fc..ece8de1 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 4a43e19..d53fc88 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 ac84ab6..73d16ba 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 ce655e8..856751a 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 d34485a..42312f6 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 0e19830..c8ca102 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 579441f..c09dd0a 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 c92e6f2..826425a 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 d9964c2..3856268 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 d4dca4d..1ae49b1 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 5c07e02..5328239 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 3eb4406..8ae4348 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 aece938..2b9a33e 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 3aba5e8..869d904 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 0f0181d..c5c16ed 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 2eef6f3..4a63ebe 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 e825a10..a395ffc 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 c6d77e1..21cbfd3 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 6454827..d1300f1 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 c67066c..ea00924 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 e6fea84..af9023a 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 e239ec4..ba467c5 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 fa31813..43e57ca 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 fd5b41f..55f156c 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 d606373..1c79043 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 75e45e2..58aba31 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 d1db41c..d2df8b8 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.7.4 |
| |