> 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.

Reply via email to