diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-6.4/backport/0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-6.4/backport/0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch | 1004 |
1 files changed, 1004 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-6.4/backport/0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch b/meta/recipes-devtools/gcc/gcc-6.4/backport/0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch new file mode 100644 index 0000000000..b50ac5cb02 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-6.4/backport/0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch | |||
@@ -0,0 +1,1004 @@ | |||
1 | From 7ba192d11a43d24ce427a3dfce0ad0592bd52830 Mon Sep 17 00:00:00 2001 | ||
2 | From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
3 | Date: Mon, 26 Feb 2018 17:00:46 +0000 | ||
4 | Subject: [PATCH 12/12] i386: Add TARGET_INDIRECT_BRANCH_REGISTER | ||
5 | |||
6 | For | ||
7 | |||
8 | --- | ||
9 | struct C { | ||
10 | virtual ~C(); | ||
11 | virtual void f(); | ||
12 | }; | ||
13 | |||
14 | void | ||
15 | f (C *p) | ||
16 | { | ||
17 | p->f(); | ||
18 | p->f(); | ||
19 | } | ||
20 | --- | ||
21 | |||
22 | -mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates: | ||
23 | |||
24 | _Z1fP1C: | ||
25 | .LFB0: | ||
26 | .cfi_startproc | ||
27 | pushq %rbx | ||
28 | .cfi_def_cfa_offset 16 | ||
29 | .cfi_offset 3, -16 | ||
30 | movq (%rdi), %rax | ||
31 | movq %rdi, %rbx | ||
32 | jmp .LIND1 | ||
33 | .LIND0: | ||
34 | pushq 16(%rax) | ||
35 | jmp __x86_indirect_thunk | ||
36 | .LIND1: | ||
37 | call .LIND0 | ||
38 | movq (%rbx), %rax | ||
39 | movq %rbx, %rdi | ||
40 | popq %rbx | ||
41 | .cfi_def_cfa_offset 8 | ||
42 | movq 16(%rax), %rax | ||
43 | jmp __x86_indirect_thunk_rax | ||
44 | .cfi_endproc | ||
45 | |||
46 | x86-64 is supposed to have asynchronous unwind tables by default, but | ||
47 | there is nothing that reflects the change in the (relative) frame | ||
48 | address after .LIND0. That region really has to be moved outside of | ||
49 | the .cfi_startproc/.cfi_endproc bracket. | ||
50 | |||
51 | This patch adds TARGET_INDIRECT_BRANCH_REGISTER to force indirect | ||
52 | branch via register whenever -mindirect-branch= is used. Now, | ||
53 | -mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates: | ||
54 | |||
55 | _Z1fP1C: | ||
56 | .LFB0: | ||
57 | .cfi_startproc | ||
58 | pushq %rbx | ||
59 | .cfi_def_cfa_offset 16 | ||
60 | .cfi_offset 3, -16 | ||
61 | movq (%rdi), %rax | ||
62 | movq %rdi, %rbx | ||
63 | movq 16(%rax), %rax | ||
64 | call __x86_indirect_thunk_rax | ||
65 | movq (%rbx), %rax | ||
66 | movq %rbx, %rdi | ||
67 | popq %rbx | ||
68 | .cfi_def_cfa_offset 8 | ||
69 | movq 16(%rax), %rax | ||
70 | jmp __x86_indirect_thunk_rax | ||
71 | .cfi_endproc | ||
72 | |||
73 | so that "-mindirect-branch=thunk-extern" is equivalent to | ||
74 | "-mindirect-branch=thunk-extern -mindirect-branch-register", which is | ||
75 | used by Linux kernel. | ||
76 | |||
77 | gcc/ | ||
78 | |||
79 | Backport from mainline | ||
80 | PR target/84039 | ||
81 | * config/i386/constraints.md (Bs): Replace | ||
82 | ix86_indirect_branch_register with | ||
83 | TARGET_INDIRECT_BRANCH_REGISTER. | ||
84 | (Bw): Likewise. | ||
85 | * config/i386/i386.md (indirect_jump): Likewise. | ||
86 | (tablejump): Likewise. | ||
87 | (*sibcall_memory): Likewise. | ||
88 | (*sibcall_value_memory): Likewise. | ||
89 | Peepholes of indirect call and jump via memory: Likewise. | ||
90 | (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER. | ||
91 | (*sibcall_value_GOT_32): Likewise. | ||
92 | * config/i386/predicates.md (indirect_branch_operand): Likewise. | ||
93 | (GOT_memory_operand): Likewise. | ||
94 | (call_insn_operand): Likewise. | ||
95 | (sibcall_insn_operand): Likewise. | ||
96 | (GOT32_symbol_operand): Likewise. | ||
97 | * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New. | ||
98 | |||
99 | gcc/testsuite/ | ||
100 | |||
101 | Backport from mainline | ||
102 | PR target/84039 | ||
103 | * gcc.target/i386/indirect-thunk-1.c: Updated. | ||
104 | * gcc.target/i386/indirect-thunk-2.c: Likewise. | ||
105 | * gcc.target/i386/indirect-thunk-3.c: Likewise. | ||
106 | * gcc.target/i386/indirect-thunk-4.c: Likewise. | ||
107 | * gcc.target/i386/indirect-thunk-5.c: Likewise. | ||
108 | * gcc.target/i386/indirect-thunk-6.c: Likewise. | ||
109 | * gcc.target/i386/indirect-thunk-7.c: Likewise. | ||
110 | * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. | ||
111 | * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. | ||
112 | * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. | ||
113 | * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. | ||
114 | * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. | ||
115 | * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. | ||
116 | * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. | ||
117 | * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. | ||
118 | * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. | ||
119 | * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. | ||
120 | * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. | ||
121 | * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. | ||
122 | * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. | ||
123 | * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. | ||
124 | * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. | ||
125 | * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. | ||
126 | * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. | ||
127 | * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. | ||
128 | * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. | ||
129 | * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. | ||
130 | * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. | ||
131 | * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. | ||
132 | * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. | ||
133 | * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. | ||
134 | * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. | ||
135 | * gcc.target/i386/ret-thunk-9.c: Likewise. | ||
136 | * gcc.target/i386/ret-thunk-10.c: Likewise. | ||
137 | * gcc.target/i386/ret-thunk-11.c: Likewise. | ||
138 | * gcc.target/i386/ret-thunk-12.c: Likewise. | ||
139 | * gcc.target/i386/ret-thunk-13.c: Likewise. | ||
140 | * gcc.target/i386/ret-thunk-14.c: Likewise. | ||
141 | * gcc.target/i386/ret-thunk-15.c: Likewise. | ||
142 | |||
143 | Upstream-Status: Pending | ||
144 | |||
145 | Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> | ||
146 | |||
147 | --- | ||
148 | gcc/config/i386/constraints.md | 4 ++-- | ||
149 | gcc/config/i386/i386.h | 5 ++++ | ||
150 | gcc/config/i386/i386.md | 28 +++++++++++++--------- | ||
151 | gcc/config/i386/predicates.md | 6 ++--- | ||
152 | gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 5 ++-- | ||
153 | gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 5 ++-- | ||
154 | gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 5 ++-- | ||
155 | gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 5 ++-- | ||
156 | gcc/testsuite/gcc.target/i386/indirect-thunk-5.c | 6 +++-- | ||
157 | gcc/testsuite/gcc.target/i386/indirect-thunk-6.c | 12 ++++++---- | ||
158 | gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 5 ++-- | ||
159 | .../gcc.target/i386/indirect-thunk-attr-1.c | 5 ++-- | ||
160 | .../gcc.target/i386/indirect-thunk-attr-2.c | 5 ++-- | ||
161 | .../gcc.target/i386/indirect-thunk-attr-3.c | 3 +-- | ||
162 | .../gcc.target/i386/indirect-thunk-attr-4.c | 3 +-- | ||
163 | .../gcc.target/i386/indirect-thunk-attr-5.c | 9 ++++--- | ||
164 | .../gcc.target/i386/indirect-thunk-attr-6.c | 9 ++++--- | ||
165 | .../gcc.target/i386/indirect-thunk-attr-7.c | 5 ++-- | ||
166 | .../gcc.target/i386/indirect-thunk-bnd-1.c | 6 ++--- | ||
167 | .../gcc.target/i386/indirect-thunk-bnd-2.c | 6 ++--- | ||
168 | .../gcc.target/i386/indirect-thunk-bnd-3.c | 5 ++-- | ||
169 | .../gcc.target/i386/indirect-thunk-bnd-4.c | 7 +++--- | ||
170 | .../gcc.target/i386/indirect-thunk-extern-1.c | 5 ++-- | ||
171 | .../gcc.target/i386/indirect-thunk-extern-2.c | 5 ++-- | ||
172 | .../gcc.target/i386/indirect-thunk-extern-3.c | 9 ++++--- | ||
173 | .../gcc.target/i386/indirect-thunk-extern-4.c | 6 ++--- | ||
174 | .../gcc.target/i386/indirect-thunk-extern-5.c | 6 +++-- | ||
175 | .../gcc.target/i386/indirect-thunk-extern-6.c | 8 +++---- | ||
176 | .../gcc.target/i386/indirect-thunk-extern-7.c | 5 ++-- | ||
177 | .../gcc.target/i386/indirect-thunk-inline-1.c | 2 +- | ||
178 | .../gcc.target/i386/indirect-thunk-inline-2.c | 2 +- | ||
179 | .../gcc.target/i386/indirect-thunk-inline-3.c | 2 +- | ||
180 | .../gcc.target/i386/indirect-thunk-inline-4.c | 2 +- | ||
181 | .../gcc.target/i386/indirect-thunk-inline-5.c | 3 ++- | ||
182 | .../gcc.target/i386/indirect-thunk-inline-6.c | 3 ++- | ||
183 | .../gcc.target/i386/indirect-thunk-inline-7.c | 4 ++-- | ||
184 | gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 9 +++---- | ||
185 | gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 9 +++---- | ||
186 | gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 8 +++---- | ||
187 | gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 5 ++-- | ||
188 | gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 7 +++--- | ||
189 | gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 7 +++--- | ||
190 | gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 13 ++++------ | ||
191 | 43 files changed, 128 insertions(+), 141 deletions(-) | ||
192 | |||
193 | diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md | ||
194 | index 9204c8e..ef684a9 100644 | ||
195 | --- a/gcc/config/i386/constraints.md | ||
196 | +++ b/gcc/config/i386/constraints.md | ||
197 | @@ -172,7 +172,7 @@ | ||
198 | |||
199 | (define_constraint "Bs" | ||
200 | "@internal Sibcall memory operand." | ||
201 | - (ior (and (not (match_test "ix86_indirect_branch_register")) | ||
202 | + (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) | ||
203 | (not (match_test "TARGET_X32")) | ||
204 | (match_operand 0 "sibcall_memory_operand")) | ||
205 | (and (match_test "TARGET_X32 && Pmode == DImode") | ||
206 | @@ -180,7 +180,7 @@ | ||
207 | |||
208 | (define_constraint "Bw" | ||
209 | "@internal Call memory operand." | ||
210 | - (ior (and (not (match_test "ix86_indirect_branch_register")) | ||
211 | + (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) | ||
212 | (not (match_test "TARGET_X32")) | ||
213 | (match_operand 0 "memory_operand")) | ||
214 | (and (match_test "TARGET_X32 && Pmode == DImode") | ||
215 | diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h | ||
216 | index b34bc11..1816d71 100644 | ||
217 | --- a/gcc/config/i386/i386.h | ||
218 | +++ b/gcc/config/i386/i386.h | ||
219 | @@ -2676,6 +2676,11 @@ extern void debug_dispatch_window (int); | ||
220 | #define TARGET_RECIP_VEC_DIV ((recip_mask & RECIP_MASK_VEC_DIV) != 0) | ||
221 | #define TARGET_RECIP_VEC_SQRT ((recip_mask & RECIP_MASK_VEC_SQRT) != 0) | ||
222 | |||
223 | + | ||
224 | +#define TARGET_INDIRECT_BRANCH_REGISTER \ | ||
225 | + (ix86_indirect_branch_register \ | ||
226 | + || cfun->machine->indirect_branch_type != indirect_branch_keep) | ||
227 | + | ||
228 | #define IX86_HLE_ACQUIRE (1 << 16) | ||
229 | #define IX86_HLE_RELEASE (1 << 17) | ||
230 | |||
231 | diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md | ||
232 | index 857466a..6a6dc26 100644 | ||
233 | --- a/gcc/config/i386/i386.md | ||
234 | +++ b/gcc/config/i386/i386.md | ||
235 | @@ -11805,7 +11805,7 @@ | ||
236 | [(set (pc) (match_operand 0 "indirect_branch_operand"))] | ||
237 | "" | ||
238 | { | ||
239 | - if (TARGET_X32 || ix86_indirect_branch_register) | ||
240 | + if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER) | ||
241 | operands[0] = convert_memory_address (word_mode, operands[0]); | ||
242 | cfun->machine->has_local_indirect_jump = true; | ||
243 | }) | ||
244 | @@ -11859,7 +11859,7 @@ | ||
245 | OPTAB_DIRECT); | ||
246 | } | ||
247 | |||
248 | - if (TARGET_X32 || ix86_indirect_branch_register) | ||
249 | + if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER) | ||
250 | operands[0] = convert_memory_address (word_mode, operands[0]); | ||
251 | cfun->machine->has_local_indirect_jump = true; | ||
252 | }) | ||
253 | @@ -12029,7 +12029,10 @@ | ||
254 | (match_operand:SI 0 "register_no_elim_operand" "U") | ||
255 | (match_operand:SI 1 "GOT32_symbol_operand")))) | ||
256 | (match_operand 2))] | ||
257 | - "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)" | ||
258 | + "!TARGET_MACHO | ||
259 | + && !TARGET_64BIT | ||
260 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
261 | + && SIBLING_CALL_P (insn)" | ||
262 | { | ||
263 | rtx fnaddr = gen_rtx_PLUS (Pmode, operands[0], operands[1]); | ||
264 | fnaddr = gen_const_mem (Pmode, fnaddr); | ||
265 | @@ -12048,7 +12051,7 @@ | ||
266 | [(call (mem:QI (match_operand:W 0 "memory_operand" "m")) | ||
267 | (match_operand 1)) | ||
268 | (unspec [(const_int 0)] UNSPEC_PEEPSIB)] | ||
269 | - "!TARGET_X32 && !ix86_indirect_branch_register" | ||
270 | + "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER" | ||
271 | "* return ix86_output_call_insn (insn, operands[0]);" | ||
272 | [(set_attr "type" "call")]) | ||
273 | |||
274 | @@ -12058,7 +12061,7 @@ | ||
275 | (call (mem:QI (match_dup 0)) | ||
276 | (match_operand 3))] | ||
277 | "!TARGET_X32 | ||
278 | - && !ix86_indirect_branch_register | ||
279 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
280 | && SIBLING_CALL_P (peep2_next_insn (1)) | ||
281 | && !reg_mentioned_p (operands[0], | ||
282 | CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))" | ||
283 | @@ -12073,7 +12076,7 @@ | ||
284 | (call (mem:QI (match_dup 0)) | ||
285 | (match_operand 3))] | ||
286 | "!TARGET_X32 | ||
287 | - && !ix86_indirect_branch_register | ||
288 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
289 | && SIBLING_CALL_P (peep2_next_insn (2)) | ||
290 | && !reg_mentioned_p (operands[0], | ||
291 | CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))" | ||
292 | @@ -12171,7 +12174,7 @@ | ||
293 | (match_operand:W 1 "memory_operand")) | ||
294 | (set (pc) (match_dup 0))] | ||
295 | "!TARGET_X32 | ||
296 | - && !ix86_indirect_branch_register | ||
297 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
298 | && peep2_reg_dead_p (2, operands[0])" | ||
299 | [(set (pc) (match_dup 1))]) | ||
300 | |||
301 | @@ -12229,7 +12232,10 @@ | ||
302 | (match_operand:SI 1 "register_no_elim_operand" "U") | ||
303 | (match_operand:SI 2 "GOT32_symbol_operand")))) | ||
304 | (match_operand 3)))] | ||
305 | - "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)" | ||
306 | + "!TARGET_MACHO | ||
307 | + && !TARGET_64BIT | ||
308 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
309 | + && SIBLING_CALL_P (insn)" | ||
310 | { | ||
311 | rtx fnaddr = gen_rtx_PLUS (Pmode, operands[1], operands[2]); | ||
312 | fnaddr = gen_const_mem (Pmode, fnaddr); | ||
313 | @@ -12250,7 +12256,7 @@ | ||
314 | (call (mem:QI (match_operand:W 1 "memory_operand" "m")) | ||
315 | (match_operand 2))) | ||
316 | (unspec [(const_int 0)] UNSPEC_PEEPSIB)] | ||
317 | - "!TARGET_X32 && !ix86_indirect_branch_register" | ||
318 | + "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER" | ||
319 | "* return ix86_output_call_insn (insn, operands[1]);" | ||
320 | [(set_attr "type" "callv")]) | ||
321 | |||
322 | @@ -12261,7 +12267,7 @@ | ||
323 | (call (mem:QI (match_dup 0)) | ||
324 | (match_operand 3)))] | ||
325 | "!TARGET_X32 | ||
326 | - && !ix86_indirect_branch_register | ||
327 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
328 | && SIBLING_CALL_P (peep2_next_insn (1)) | ||
329 | && !reg_mentioned_p (operands[0], | ||
330 | CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))" | ||
331 | @@ -12278,7 +12284,7 @@ | ||
332 | (call (mem:QI (match_dup 0)) | ||
333 | (match_operand 3)))] | ||
334 | "!TARGET_X32 | ||
335 | - && !ix86_indirect_branch_register | ||
336 | + && !TARGET_INDIRECT_BRANCH_REGISTER | ||
337 | && SIBLING_CALL_P (peep2_next_insn (2)) | ||
338 | && !reg_mentioned_p (operands[0], | ||
339 | CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))" | ||
340 | diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md | ||
341 | index d1f0a7d..5f8a98f 100644 | ||
342 | --- a/gcc/config/i386/predicates.md | ||
343 | +++ b/gcc/config/i386/predicates.md | ||
344 | @@ -593,7 +593,7 @@ | ||
345 | ;; Test for a valid operand for indirect branch. | ||
346 | (define_predicate "indirect_branch_operand" | ||
347 | (ior (match_operand 0 "register_operand") | ||
348 | - (and (not (match_test "ix86_indirect_branch_register")) | ||
349 | + (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) | ||
350 | (not (match_test "TARGET_X32")) | ||
351 | (match_operand 0 "memory_operand")))) | ||
352 | |||
353 | @@ -637,7 +637,7 @@ | ||
354 | (ior (match_test "constant_call_address_operand | ||
355 | (op, mode == VOIDmode ? mode : Pmode)") | ||
356 | (match_operand 0 "call_register_no_elim_operand") | ||
357 | - (and (not (match_test "ix86_indirect_branch_register")) | ||
358 | + (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) | ||
359 | (ior (and (not (match_test "TARGET_X32")) | ||
360 | (match_operand 0 "memory_operand")) | ||
361 | (and (match_test "TARGET_X32 && Pmode == DImode") | ||
362 | @@ -648,7 +648,7 @@ | ||
363 | (ior (match_test "constant_call_address_operand | ||
364 | (op, mode == VOIDmode ? mode : Pmode)") | ||
365 | (match_operand 0 "register_no_elim_operand") | ||
366 | - (and (not (match_test "ix86_indirect_branch_register")) | ||
367 | + (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) | ||
368 | (ior (and (not (match_test "TARGET_X32")) | ||
369 | (match_operand 0 "sibcall_memory_operand")) | ||
370 | (and (match_test "TARGET_X32 && Pmode == DImode") | ||
371 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | ||
372 | index 60d0988..6e94d2c 100644 | ||
373 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | ||
374 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | ||
375 | @@ -11,9 +11,8 @@ male_indirect_jump (long offset) | ||
376 | dispatch(offset); | ||
377 | } | ||
378 | |||
379 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
380 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
381 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
382 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
383 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
384 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
385 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
386 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
387 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | ||
388 | index aac7516..3c46707 100644 | ||
389 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | ||
390 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | ||
391 | @@ -11,9 +11,8 @@ male_indirect_jump (long offset) | ||
392 | dispatch[offset](offset); | ||
393 | } | ||
394 | |||
395 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
396 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
397 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
398 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
399 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
400 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
401 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
402 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
403 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | ||
404 | index 9e24a38..2c7fb52 100644 | ||
405 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | ||
406 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | ||
407 | @@ -12,9 +12,8 @@ male_indirect_jump (long offset) | ||
408 | return 0; | ||
409 | } | ||
410 | |||
411 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
412 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
413 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
414 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
415 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
416 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
417 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
418 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
419 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | ||
420 | index 127b5d9..0d3f895 100644 | ||
421 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | ||
422 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | ||
423 | @@ -12,9 +12,8 @@ male_indirect_jump (long offset) | ||
424 | return 0; | ||
425 | } | ||
426 | |||
427 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
428 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
429 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
430 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
431 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
432 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
433 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
434 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
435 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c | ||
436 | index fcaa18d..fb26c00 100644 | ||
437 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c | ||
438 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c | ||
439 | @@ -9,8 +9,10 @@ foo (void) | ||
440 | bar (); | ||
441 | } | ||
442 | |||
443 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
444 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
445 | +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ | ||
446 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ | ||
447 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ | ||
448 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ | ||
449 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
450 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
451 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
452 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c | ||
453 | index e464928..aa03fbd 100644 | ||
454 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c | ||
455 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c | ||
456 | @@ -10,9 +10,13 @@ foo (void) | ||
457 | return 0; | ||
458 | } | ||
459 | |||
460 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
461 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
462 | -/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ | ||
463 | -/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ | ||
464 | +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ | ||
465 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ | ||
466 | +/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 { target x32 } } } */ | ||
467 | +/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 { target x32 } } } */ | ||
468 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ | ||
469 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ | ||
470 | +/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
471 | +/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
472 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
473 | /* { dg-final { scan-assembler {\tlfence} } } */ | ||
474 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | ||
475 | index 17c2d0f..3c72036 100644 | ||
476 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | ||
477 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | ||
478 | @@ -35,9 +35,8 @@ bar (int i) | ||
479 | } | ||
480 | } | ||
481 | |||
482 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ | ||
483 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
484 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
485 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ | ||
486 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
487 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
488 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
489 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
490 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | ||
491 | index 9194ccf..7106407 100644 | ||
492 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | ||
493 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | ||
494 | @@ -14,9 +14,8 @@ male_indirect_jump (long offset) | ||
495 | dispatch(offset); | ||
496 | } | ||
497 | |||
498 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
499 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
500 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
501 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
502 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
503 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
504 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
505 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
506 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | ||
507 | index e51f261..27c7e5b 100644 | ||
508 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | ||
509 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | ||
510 | @@ -12,9 +12,8 @@ male_indirect_jump (long offset) | ||
511 | dispatch[offset](offset); | ||
512 | } | ||
513 | |||
514 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
515 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
516 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
517 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
518 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
519 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
520 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
521 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
522 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | ||
523 | index 4aeec18..89a2bac 100644 | ||
524 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | ||
525 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | ||
526 | @@ -14,10 +14,9 @@ male_indirect_jump (long offset) | ||
527 | return 0; | ||
528 | } | ||
529 | |||
530 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
531 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
532 | /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ | ||
533 | /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ | ||
534 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
535 | /* { dg-final { scan-assembler {\tlfence} } } */ | ||
536 | /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ | ||
537 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
538 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | ||
539 | index ac0e599..3eb83c3 100644 | ||
540 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | ||
541 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | ||
542 | @@ -13,10 +13,9 @@ male_indirect_jump (long offset) | ||
543 | return 0; | ||
544 | } | ||
545 | |||
546 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
547 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
548 | /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ | ||
549 | /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ | ||
550 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
551 | /* { dg-final { scan-assembler {\tlfence} } } */ | ||
552 | /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ | ||
553 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
554 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | ||
555 | index 573cf1e..0098dd1 100644 | ||
556 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | ||
557 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | ||
558 | @@ -14,9 +14,8 @@ male_indirect_jump (long offset) | ||
559 | return 0; | ||
560 | } | ||
561 | |||
562 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
563 | -/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
564 | -/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
565 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
566 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
567 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
568 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
569 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
570 | +/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
571 | +/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
572 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | ||
573 | index b2b37fc..ece8de1 100644 | ||
574 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | ||
575 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | ||
576 | @@ -13,9 +13,8 @@ male_indirect_jump (long offset) | ||
577 | return 0; | ||
578 | } | ||
579 | |||
580 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
581 | -/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
582 | -/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
583 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
584 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
585 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
586 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
587 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
588 | +/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
589 | +/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
590 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | ||
591 | index 4a43e19..d53fc88 100644 | ||
592 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | ||
593 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | ||
594 | @@ -36,9 +36,8 @@ bar (int i) | ||
595 | } | ||
596 | } | ||
597 | |||
598 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ | ||
599 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
600 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
601 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ | ||
602 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
603 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
604 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
605 | /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
606 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | ||
607 | index ac84ab6..73d16ba 100644 | ||
608 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | ||
609 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | ||
610 | @@ -10,9 +10,9 @@ foo (void) | ||
611 | dispatch (buf); | ||
612 | } | ||
613 | |||
614 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
615 | -/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ | ||
616 | -/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ | ||
617 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
618 | +/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ | ||
619 | +/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ | ||
620 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
621 | /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ | ||
622 | /* { dg-final { scan-assembler "bnd ret" } } */ | ||
623 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | ||
624 | index ce655e8..856751a 100644 | ||
625 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | ||
626 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | ||
627 | @@ -11,10 +11,8 @@ foo (void) | ||
628 | return 0; | ||
629 | } | ||
630 | |||
631 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
632 | -/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ | ||
633 | -/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ | ||
634 | -/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */ | ||
635 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
636 | +/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */ | ||
637 | /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ | ||
638 | /* { dg-final { scan-assembler "bnd ret" } } */ | ||
639 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
640 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c | ||
641 | index d34485a..42312f6 100644 | ||
642 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c | ||
643 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c | ||
644 | @@ -10,8 +10,9 @@ foo (void) | ||
645 | bar (buf); | ||
646 | } | ||
647 | |||
648 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
649 | -/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ | ||
650 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
651 | +/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ | ||
652 | +/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ | ||
653 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
654 | /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ | ||
655 | /* { dg-final { scan-assembler "bnd ret" } } */ | ||
656 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c | ||
657 | index 0e19830..c8ca102 100644 | ||
658 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c | ||
659 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c | ||
660 | @@ -11,10 +11,9 @@ foo (void) | ||
661 | return 0; | ||
662 | } | ||
663 | |||
664 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
665 | -/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
666 | -/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */ | ||
667 | -/* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 2 } } */ | ||
668 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
669 | +/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */ | ||
670 | +/* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 1 } } */ | ||
671 | /* { dg-final { scan-assembler "bnd ret" } } */ | ||
672 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
673 | /* { dg-final { scan-assembler {\tlfence} } } */ | ||
674 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | ||
675 | index 579441f..c09dd0a 100644 | ||
676 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | ||
677 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | ||
678 | @@ -11,9 +11,8 @@ male_indirect_jump (long offset) | ||
679 | dispatch(offset); | ||
680 | } | ||
681 | |||
682 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
683 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
684 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
685 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
686 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
687 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
688 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
689 | /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
690 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | ||
691 | index c92e6f2..826425a 100644 | ||
692 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | ||
693 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | ||
694 | @@ -11,9 +11,8 @@ male_indirect_jump (long offset) | ||
695 | dispatch[offset](offset); | ||
696 | } | ||
697 | |||
698 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
699 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
700 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
701 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
702 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
703 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
704 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
705 | /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
706 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | ||
707 | index d9964c2..3856268 100644 | ||
708 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | ||
709 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | ||
710 | @@ -12,9 +12,8 @@ male_indirect_jump (long offset) | ||
711 | return 0; | ||
712 | } | ||
713 | |||
714 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
715 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
716 | -/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
717 | -/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
718 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
719 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
720 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
721 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
722 | +/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
723 | +/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
724 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | ||
725 | index d4dca4d..1ae49b1 100644 | ||
726 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | ||
727 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | ||
728 | @@ -12,9 +12,7 @@ male_indirect_jump (long offset) | ||
729 | return 0; | ||
730 | } | ||
731 | |||
732 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
733 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
734 | -/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
735 | -/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ | ||
736 | /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
737 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
738 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
739 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
740 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c | ||
741 | index 5c07e02..5328239 100644 | ||
742 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c | ||
743 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c | ||
744 | @@ -9,8 +9,10 @@ foo (void) | ||
745 | bar (); | ||
746 | } | ||
747 | |||
748 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
749 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
750 | +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ | ||
751 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ | ||
752 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ | ||
753 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ | ||
754 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
755 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
756 | /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
757 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c | ||
758 | index 3eb4406..8ae4348 100644 | ||
759 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c | ||
760 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c | ||
761 | @@ -10,8 +10,8 @@ foo (void) | ||
762 | return 0; | ||
763 | } | ||
764 | |||
765 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
766 | -/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 } } */ | ||
767 | -/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 } } */ | ||
768 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
769 | +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ | ||
770 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ | ||
771 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ | ||
772 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ | ||
773 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
774 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | ||
775 | index aece938..2b9a33e 100644 | ||
776 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | ||
777 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | ||
778 | @@ -35,9 +35,8 @@ bar (int i) | ||
779 | } | ||
780 | } | ||
781 | |||
782 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ | ||
783 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
784 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
785 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ | ||
786 | +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
787 | /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ | ||
788 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ | ||
789 | /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ | ||
790 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | ||
791 | index 3aba5e8..869d904 100644 | ||
792 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | ||
793 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | ||
794 | @@ -11,7 +11,7 @@ male_indirect_jump (long offset) | ||
795 | dispatch(offset); | ||
796 | } | ||
797 | |||
798 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
799 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
800 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
801 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
802 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
803 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | ||
804 | index 0f0181d..c5c16ed 100644 | ||
805 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | ||
806 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | ||
807 | @@ -11,7 +11,7 @@ male_indirect_jump (long offset) | ||
808 | dispatch[offset](offset); | ||
809 | } | ||
810 | |||
811 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
812 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
813 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
814 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
815 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
816 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | ||
817 | index 2eef6f3..4a63ebe 100644 | ||
818 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | ||
819 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | ||
820 | @@ -12,7 +12,7 @@ male_indirect_jump (long offset) | ||
821 | return 0; | ||
822 | } | ||
823 | |||
824 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
825 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
826 | /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ | ||
827 | /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ | ||
828 | /* { dg-final { scan-assembler-times {\tpause} 1 } } */ | ||
829 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | ||
830 | index e825a10..a395ffc 100644 | ||
831 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | ||
832 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | ||
833 | @@ -12,7 +12,7 @@ male_indirect_jump (long offset) | ||
834 | return 0; | ||
835 | } | ||
836 | |||
837 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ | ||
838 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ | ||
839 | /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ | ||
840 | /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ | ||
841 | /* { dg-final { scan-assembler-times {\tpause} 1 } } */ | ||
842 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c | ||
843 | index c6d77e1..21cbfd3 100644 | ||
844 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c | ||
845 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c | ||
846 | @@ -9,7 +9,8 @@ foo (void) | ||
847 | bar (); | ||
848 | } | ||
849 | |||
850 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
851 | +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ | ||
852 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ | ||
853 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
854 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
855 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
856 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c | ||
857 | index 6454827..d1300f1 100644 | ||
858 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c | ||
859 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c | ||
860 | @@ -10,7 +10,8 @@ foo (void) | ||
861 | return 0; | ||
862 | } | ||
863 | |||
864 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ | ||
865 | +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ | ||
866 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ | ||
867 | /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ | ||
868 | /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ | ||
869 | /* { dg-final { scan-assembler-times {\tpause} 1 } } */ | ||
870 | diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | ||
871 | index c67066c..ea00924 100644 | ||
872 | --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | ||
873 | +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | ||
874 | @@ -35,8 +35,8 @@ bar (int i) | ||
875 | } | ||
876 | } | ||
877 | |||
878 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ | ||
879 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
880 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ | ||
881 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */ | ||
882 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
883 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
884 | /* { dg-final { scan-assembler {\tpause} } } */ | ||
885 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | ||
886 | index e6fea84..af9023a 100644 | ||
887 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | ||
888 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | ||
889 | @@ -15,9 +15,6 @@ foo (void) | ||
890 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ | ||
891 | /* { dg-final { scan-assembler-times {\tpause} 2 } } */ | ||
892 | /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ | ||
893 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ | ||
894 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
895 | -/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ | ||
896 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ | ||
897 | -/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ | ||
898 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
899 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
900 | +/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ | ||
901 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
902 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | ||
903 | index e239ec4..ba467c5 100644 | ||
904 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | ||
905 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | ||
906 | @@ -15,9 +15,6 @@ foo (void) | ||
907 | /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ | ||
908 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
909 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
910 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ | ||
911 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
912 | -/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ | ||
913 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ | ||
914 | -/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ | ||
915 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
916 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
917 | +/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ | ||
918 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
919 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-12.c b/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | ||
920 | index fa31813..43e57ca 100644 | ||
921 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | ||
922 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | ||
923 | @@ -15,8 +15,6 @@ foo (void) | ||
924 | /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ | ||
925 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
926 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
927 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
928 | -/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ | ||
929 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ | ||
930 | -/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ | ||
931 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
932 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
933 | +/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ | ||
934 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
935 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | ||
936 | index fd5b41f..55f156c 100644 | ||
937 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | ||
938 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | ||
939 | @@ -14,9 +14,8 @@ foo (void) | ||
940 | /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ | ||
941 | /* { dg-final { scan-assembler-times {\tpause} 2 } } */ | ||
942 | /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ | ||
943 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ | ||
944 | /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */ | ||
945 | /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */ | ||
946 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */ | ||
947 | -/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ | ||
948 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
949 | +/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
950 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
951 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | ||
952 | index d606373..1c79043 100644 | ||
953 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | ||
954 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | ||
955 | @@ -16,7 +16,6 @@ foo (void) | ||
956 | /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ | ||
957 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
958 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
959 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ | ||
960 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
961 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ | ||
962 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
963 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ | ||
964 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
965 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
966 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | ||
967 | index 75e45e2..58aba31 100644 | ||
968 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | ||
969 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | ||
970 | @@ -16,7 +16,6 @@ foo (void) | ||
971 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
972 | /* { dg-final { scan-assembler-times {\tpause} 1 } } */ | ||
973 | /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ | ||
974 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ | ||
975 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
976 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ | ||
977 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
978 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ | ||
979 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
980 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
981 | diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | ||
982 | index d1db41c..d2df8b8 100644 | ||
983 | --- a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | ||
984 | +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | ||
985 | @@ -14,11 +14,8 @@ foo (void) | ||
986 | /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ | ||
987 | /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ | ||
988 | /* { dg-final { scan-assembler "__x86_indirect_thunk:" } } */ | ||
989 | -/* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */ | ||
990 | -/* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */ | ||
991 | -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ | ||
992 | -/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ | ||
993 | -/* { dg-final { scan-assembler-times {\tpause} 2 { target { x32 } } } } */ | ||
994 | -/* { dg-final { scan-assembler-times {\tlfence} 2 { target { x32 } } } } */ | ||
995 | -/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ | ||
996 | -/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ | ||
997 | +/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ | ||
998 | +/* { dg-final { scan-assembler-times {\tpause} 2 } } */ | ||
999 | +/* { dg-final { scan-assembler-times {\tlfence} 2 } } */ | ||
1000 | +/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ | ||
1001 | +/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ | ||
1002 | -- | ||
1003 | 2.7.4 | ||
1004 | |||