> Hi Jan, > > Can you review this patch? This blocks the GCC 7 backport. > > Thanks. > > H.J. > > > ---------- Forwarded message ---------- > From: H.J. Lu <hjl.to...@gmail.com> > Date: Mon, Jan 15, 2018 at 8:45 AM > Subject: [PATCH] i386: Don't use ASM_OUTPUT_DEF for TARGET_MACHO > To: gcc-patches@gcc.gnu.org > Cc: Uros Bizjak <ubiz...@gmail.com> > > > ASM_OUTPUT_DEF isn't defined for TARGET_MACHO. Use ASM_OUTPUT_LABEL to > generate the __x86_return_thunk label, instead of the set directive. > Update testcase to remove the __x86_return_thunk label check. Since > -fno-pic is ignored on Darwin, update testcases to sscan or "push" > only on Linux. > > Tested with a cross compiler to x86_64-apple-darwin10.4.0. OK for > trunk? > > H.J. > --- > gcc/ > > PR target/83839 > * config/i386/i386.c (output_indirect_thunk_function): Use > ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO > for __x86.return_thunk.
Hmm, we really ought to merge it with the way normal thunks are output from middle-end next stage1. OK Honza > > gcc/testsuite/ > > PR target/83839 > * gcc.target/i386/indirect-thunk-1.c: Scan for "push" only on > Linux. > * 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-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-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-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-7.c: Likewise. > * gcc.target/i386/indirect-thunk-register-1.c: Likewise. > * gcc.target/i386/indirect-thunk-register-3.c: Likewise. > * gcc.target/i386/indirect-thunk-register-4.c: Likewise. > * gcc.target/i386/ret-thunk-10.c: Likewise. > * gcc.target/i386/ret-thunk-11.c: Likewise. > * gcc.target/i386/ret-thunk-12.c: Likewise. > * gcc.target/i386/ret-thunk-13.c: Likewise. > * gcc.target/i386/ret-thunk-14.c: Likewise. > * gcc.target/i386/ret-thunk-15.c: Likewise. > * gcc.target/i386/ret-thunk-9.c: Don't check the > __x86_return_thunk label. > Scan for "push" only for Linux. > --- > gcc/config/i386/i386.c | 3 ++- > gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 2 +- > gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 2 +- > gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 2 +- > gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 2 +- > gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 2 +- > gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 2 +- > gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 2 +- > gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 3 +-- > 31 files changed, 32 insertions(+), 32 deletions(-) > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index 5e4f845a1bd..bfb31db8752 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -10970,7 +10970,6 @@ output_indirect_thunk_function (bool > need_bnd_p, int regno) > char alias[32]; > > indirect_thunk_name (alias, regno, need_bnd_p, true); > - ASM_OUTPUT_DEF (asm_out_file, alias, name); > #if TARGET_MACHO > if (TARGET_MACHO) > { > @@ -10979,8 +10978,10 @@ output_indirect_thunk_function (bool > need_bnd_p, int regno) > fputs ("\n\t.private_extern\t", asm_out_file); > assemble_name (asm_out_file, alias); > putc ('\n', asm_out_file); > + ASM_OUTPUT_LABEL (asm_out_file, alias); > } > #else > + ASM_OUTPUT_DEF (asm_out_file, alias, name); > if (USE_HIDDEN_LINKONCE) > { > fputs ("\t.globl\t", asm_out_file); > diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c > b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c > index 9eb9b273ade..60d09881a99 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c > @@ -11,7 +11,7 @@ male_indirect_jump (long offset) > dispatch(offset); > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c > b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c > index c63795e4127..aac75163794 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-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 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c > b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c > index 82973cda771..9e24a385387 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c > @@ -12,7 +12,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c > b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c > index a5f3d1cbed8..127b5d94523 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c > @@ -12,7 +12,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c > b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c > index ebfb8aab937..17c2d0faf88 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c > @@ -35,7 +35,7 @@ bar (int i) > } > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" > { target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > 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 a08022db8e4..9194ccf3cbc 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c > @@ -14,7 +14,7 @@ male_indirect_jump (long offset) > dispatch(offset); > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > 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 b257c695ad1..e51f261a612 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c > @@ -12,7 +12,7 @@ male_indirect_jump (long offset) > dispatch[offset](offset); > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > 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 dfb1370d23d..4aeec1833cd 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c > @@ -14,7 +14,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { { ! x32 } && *-*-linux* } } } } */ > /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ > /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ > /* { dg-final { scan-assembler {\tpause} } } */ > 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 a6e3f6f9f2b..ac0e5999f63 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c > @@ -13,7 +13,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { { ! x32 } && *-*-linux* } } } } */ > /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ > /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ > /* { dg-final { scan-assembler {\tpause} } } */ > 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 4bb1c5f9220..573cf1ef09e 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c > @@ -14,7 +14,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 } } } } */ > 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 4e33a638862..b2b37fc6e2e 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c > @@ -13,7 +13,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 } } } } */ > 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 427ba3ddbb4..4a43e199931 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c > @@ -36,7 +36,7 @@ bar (int i) > } > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" > { target { ! x32 } } } } */ > +/* { 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-not {\t(lfence|pause)} } } */ > 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 dc7143414fb..ac84ab623fa 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c > @@ -10,7 +10,7 @@ foo (void) > dispatch (buf); > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > 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 737c60946f6..ce655e8be1c 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c > @@ -11,7 +11,7 @@ foo (void) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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" } } */ > 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 5c20a35ecec..579441f250e 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c > @@ -11,7 +11,7 @@ male_indirect_jump (long offset) > dispatch(offset); > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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-not {\t(lfence|pause)} } } */ > 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 b2fb6e1bcd2..c92e6f2b02d 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-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 } } } } */ > +/* { 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-not {\t(lfence|pause)} } } */ > 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 9c84547cd7c..d9964c25bbd 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c > @@ -12,7 +12,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 } } } } */ > 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 457849564bb..d4dca4dc5fe 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c > @@ -12,7 +12,7 @@ male_indirect_jump (long offset) > return 0; > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { ! x32 } } } } */ > +/* { 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 } } } } */ > 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 d4747ea0764..aece9383697 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c > @@ -35,7 +35,7 @@ bar (int i) > } > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" > { target { ! x32 } } } } */ > +/* { 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-not {\t(lfence|pause)} } } */ > 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 536abfa74e4..3aba5e8c81f 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 } } } } */ > +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { { ! x32 } && *-*-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 bd2b6246aa1..0f0181d6672 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 } } } } */ > +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { { ! x32 } && *-*-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 9885eebbcff..2eef6f35a75 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 } } } } */ > +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { { ! x32 } && *-*-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 7b3983949d2..e825a10f14c 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 } } } } */ > +/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { > target { { ! x32 } && *-*-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-7.c > b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c > index cc592f89aba..c67066cf197 100644 > --- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c > +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c > @@ -35,7 +35,7 @@ bar (int i) > } > } > > -/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" > { target { ! x32 } } } } */ > +/* { 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 "jmp\[ \t\]*\.LIND" } } */ > /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ > diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c > b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c > index b4f9d48065d..e6fea84a4d9 100644 > --- a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c > +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c > @@ -15,7 +15,7 @@ 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 } } } } */ > +/* { 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 } } } } */ > diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c > b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c > index 0312577a043..e239ec4542f 100644 > --- a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c > +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c > @@ -15,7 +15,7 @@ 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 } } } } */ > +/* { 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 } } } } */ > diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c > b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c > index 7a08e71c76b..fd5b41fdd3f 100644 > --- a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c > +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c > @@ -14,7 +14,7 @@ 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 } } } } */ > +/* { 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" } } */ > diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c > b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c > index dacf0c769fc..d606373ead1 100644 > --- a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c > +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c > @@ -16,7 +16,7 @@ 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 } } } } */ > +/* { 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 } } } */ > diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c > b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c > index cf06a5f35c7..75e45e226b8 100644 > --- a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c > +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c > @@ -16,7 +16,7 @@ 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 } } } } */ > +/* { 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 } } } */ > diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c > b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c > index 6da5ab97081..d1db41cc128 100644 > --- a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c > +++ b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c > @@ -11,13 +11,12 @@ foo (void) > } > > /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ > -/* { dg-final { scan-assembler-not "__x86_return_thunk:" } } */ > /* { 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 } } } } */ > +/* { 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 } } } } */ > -- > 2.14.3 > > > > -- > H.J.