In these cases, we need to add a second regex to match Darwin/Mach-O or
to amend the use of symbols to include USER_LABEL_PREFIX.
gcc/testsuite/ChangeLog:
* gcc.target/i386/builtin-memmove-13.c: Add support for Mach-O.
* gcc.target/i386/cf_check-11.c: Likewise.
* gcc.target/i386/memcpy-pr120683-1.c: Likewise.
* gcc.target/i386/memcpy-strategy-13.c: Likewise.
* gcc.target/i386/memset-pr120683-10.c: Likewise.
* gcc.target/i386/memset-pr120683-20.c: Likewise.
* gcc.target/i386/memset-pr120683-21.c: Likewise.
* gcc.target/i386/memset-strategy-27.c: Likewise.
* gcc.target/i386/opt-comi-1.c: Likewise.
* gcc.target/i386/pr122343-1a.c: Likewise.
* gcc.target/i386/pr122343-1b.c: Likewise.
* gcc.target/i386/pr122343-2a.c: Likewise.
* gcc.target/i386/pr122343-2b.c: Likewise.
* gcc.target/i386/pr125355-2.c: Likewise.
* gcc.target/i386/pr125355.c: Likewise.
* gcc.target/i386/prefetchi-1.c: Likewise.
* gcc.target/i386/prefetchi-1b.c: Likewise.
Signed-off-by: Iain Sandoe <[email protected]>
---
.../gcc.target/i386/builtin-memmove-13.c | 13 +++++++-
gcc/testsuite/gcc.target/i386/cf_check-11.c | 2 +-
.../gcc.target/i386/memcpy-pr120683-1.c | 32 +++++++++++++++++--
.../gcc.target/i386/memcpy-strategy-13.c | 4 +--
.../gcc.target/i386/memset-pr120683-10.c | 18 +++++++++--
.../gcc.target/i386/memset-pr120683-20.c | 26 +++++++++++++--
.../gcc.target/i386/memset-pr120683-21.c | 26 +++++++++++++--
.../gcc.target/i386/memset-strategy-27.c | 4 +--
gcc/testsuite/gcc.target/i386/opt-comi-1.c | 1 +
gcc/testsuite/gcc.target/i386/pr111657-1.c | 24 ++++++++++++--
gcc/testsuite/gcc.target/i386/pr122343-1a.c | 13 +++++++-
gcc/testsuite/gcc.target/i386/pr122343-1b.c | 14 +++++++-
gcc/testsuite/gcc.target/i386/pr122343-2a.c | 15 +++++++--
gcc/testsuite/gcc.target/i386/pr122343-2b.c | 16 ++++++++--
gcc/testsuite/gcc.target/i386/pr122343-3.c | 13 ++++++--
gcc/testsuite/gcc.target/i386/pr122343-4a.c | 18 ++++++++++-
gcc/testsuite/gcc.target/i386/pr122343-4b.c | 21 ++++++++++--
gcc/testsuite/gcc.target/i386/pr122343-5a.c | 13 ++++++--
gcc/testsuite/gcc.target/i386/pr122343-5b.c | 16 ++++++++--
gcc/testsuite/gcc.target/i386/pr122343-6a.c | 21 ++++++++++--
gcc/testsuite/gcc.target/i386/pr122343-6b.c | 23 +++++++++++--
gcc/testsuite/gcc.target/i386/pr122343-7.c | 16 ++++++++--
gcc/testsuite/gcc.target/i386/pr122675-1.c | 2 +-
gcc/testsuite/gcc.target/i386/pr125351.c | 1 +
gcc/testsuite/gcc.target/i386/pr125355-2.c | 4 +--
gcc/testsuite/gcc.target/i386/pr125355.c | 2 +-
gcc/testsuite/gcc.target/i386/pr92080-17.c | 16 ++++++++--
gcc/testsuite/gcc.target/i386/prefetchi-1.c | 4 +--
gcc/testsuite/gcc.target/i386/prefetchi-1b.c | 4 +--
29 files changed, 335 insertions(+), 47 deletions(-)
diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
b/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
index b4854a5f835..91eff7fb95d 100644
--- a/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
+++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
@@ -2,7 +2,8 @@
/* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -fno-pie" } */
/* { dg-add-options check_function_bodies } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.}
} } */
+/* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { !
*-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**foo:
@@ -15,6 +16,16 @@
** ret
** .cfi_endproc
**...
+*#
+
+*Dfoo:
+*D movl 3\+_a\(%rip\), %eax
+*D movl %eax, _a\(%rip\)
+*D movzbl 7\+_a\(%rip\), %eax
+*D movb %al, 4\+_a\(%rip\)
+*D ret
+*D...
+*E
*/
char a[8] = "12345678";
diff --git a/gcc/testsuite/gcc.target/i386/cf_check-11.c
b/gcc/testsuite/gcc.target/i386/cf_check-11.c
index 2a85a5b4e70..c8c91a2b878 100644
--- a/gcc/testsuite/gcc.target/i386/cf_check-11.c
+++ b/gcc/testsuite/gcc.target/i386/cf_check-11.c
@@ -22,4 +22,4 @@ foo (void)
{
}
-/* { dg-final { scan-assembler ".weak\[ \t\]_?foo" } } */
+/* { dg-final { scan-assembler ".weak(|_definition)\[ \t\]_?foo" } } */
diff --git a/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
b/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
index 6d5ed4f805a..f50c8b6cff0 100644
--- a/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
+++ b/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mno-sse
-mmemcpy-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { !
*-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**foo:
@@ -32,6 +32,34 @@
** jb .L[0-9]+
** ret
**...
+*#
+
+*Dfoo:
+*D movq 221\(%rsi\), %rax
+*D xorl %edx, %edx
+*D movq %rax, 221\(%rdi\)
+*D movq 229\(%rsi\), %rax
+*D movq %rax, 229\(%rdi\)
+*D movq 237\(%rsi\), %rax
+*D movq %rax, 237\(%rdi\)
+*D movq 245\(%rsi\), %rax
+*D movq %rax, 245\(%rdi\)
+*D.L[0-9]+:
+*D movl %edx, %eax
+*D addl \$32, %edx
+*D movq \(%rsi,%rax\), %r10
+*D cmpl \$224, %edx
+*D movq 8\(%rsi,%rax\), %r9
+*D movq 16\(%rsi,%rax\), %r8
+*D movq 24\(%rsi,%rax\), %rcx
+*D movq %r10, \(%rdi,%rax\)
+*D movq %r9, 8\(%rdi,%rax\)
+*D movq %r8, 16\(%rdi,%rax\)
+*D movq %rcx, 24\(%rdi,%rax\)
+*D jb .L[0-9]+
+*D ret
+*D...
+*E
*/
void
diff --git a/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
b/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
index 109bd675a51..773c919f18b 100644
--- a/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
+++ b/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mtune=generic -mno-avx" } */
-/* { dg-final { scan-assembler "jmp\tmemcpy" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler "call\tmemcpy" { target ia32 } } } */
+/* { dg-final { scan-assembler "jmp\t_?memcpy" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler "call\t_?memcpy" { target ia32 } } } */
/* { dg-final { scan-assembler-not "rep movsb" } } */
void
diff --git a/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
b/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
index 040e2937aee..90e923b2086 100644
--- a/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
+++ b/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mno-sse
-mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { !
*-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**foo:
@@ -18,6 +18,20 @@
** movq \$0, 53\(%rdi\)
** ret
**...
+*#
+
+*Dfoo:
+*D movq \$0, 29\(%rdi\)
+*D movq \$0, 37\(%rdi\)
+*D movq \$0, 45\(%rdi\)
+*D movq \$0, 53\(%rdi\)
+*D movq \$0, \(%rdi\)
+*D movq \$0, 8\(%rdi\)
+*D movq \$0, 16\(%rdi\)
+*D movq \$0, 24\(%rdi\)
+*D ret
+*D...
+*E
*/
void
diff --git a/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
b/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
index 0a79f6909df..3fe800f27a9 100644
--- a/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
+++ b/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64
-mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { !
*-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**foo:
@@ -26,6 +26,28 @@
** movd %xmm0, dest\+175\(%rip\)
** ret
**...
+*#
+
+*Dfoo:
+*D movd %edi, %xmm0
+*D punpcklbw %xmm0, %xmm0
+*D punpcklwd %xmm0, %xmm0
+*D pshufd \$0, %xmm0, %xmm0
+*D movaps %xmm0, 160\+_dest\(%rip\)
+*D movaps %xmm0, _dest\(%rip\)
+*D movaps %xmm0, 16\+_dest\(%rip\)
+*D movaps %xmm0, 32\+_dest\(%rip\)
+*D movaps %xmm0, 48\+_dest\(%rip\)
+*D movaps %xmm0, 64\+_dest\(%rip\)
+*D movaps %xmm0, 80\+_dest\(%rip\)
+*D movaps %xmm0, 96\+_dest\(%rip\)
+*D movaps %xmm0, 112\+_dest\(%rip\)
+*D movaps %xmm0, 128\+_dest\(%rip\)
+*D movaps %xmm0, 144\+_dest\(%rip\)
+*D movd %xmm0, 175\+_dest\(%rip\)
+*D ret
+*D...
+*E
*/
char dest[179];
diff --git a/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
b/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
index c058a6572b0..9e7d453286f 100644
--- a/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
+++ b/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64
-mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { !
*-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**foo:
@@ -26,6 +26,28 @@
** movaps %xmm0, dest\+160\(%rip\)
** ret
**...
+*#
+
+*Dfoo:
+*D movd %edi, %xmm0
+*D movb %dil, 176\+_dest\(%rip\)
+*D punpcklbw %xmm0, %xmm0
+*D punpcklwd %xmm0, %xmm0
+*D pshufd \$0, %xmm0, %xmm0
+*D movaps %xmm0, _dest\(%rip\)
+*D movaps %xmm0, 16\+_dest\(%rip\)
+*D movaps %xmm0, 32\+_dest\(%rip\)
+*D movaps %xmm0, 48\+_dest\(%rip\)
+*D movaps %xmm0, 64\+_dest\(%rip\)
+*D movaps %xmm0, 80\+_dest\(%rip\)
+*D movaps %xmm0, 96\+_dest\(%rip\)
+*D movaps %xmm0, 112\+_dest\(%rip\)
+*D movaps %xmm0, 128\+_dest\(%rip\)
+*D movaps %xmm0, 144\+_dest\(%rip\)
+*D movaps %xmm0, 160\+_dest\(%rip\)
+*D ret
+*D...
+*E
*/
char dest[177];
diff --git a/gcc/testsuite/gcc.target/i386/memset-strategy-27.c
b/gcc/testsuite/gcc.target/i386/memset-strategy-27.c
index 685d6e5a5c2..57f25211bd2 100644
--- a/gcc/testsuite/gcc.target/i386/memset-strategy-27.c
+++ b/gcc/testsuite/gcc.target/i386/memset-strategy-27.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mtune=generic -mno-avx" } */
-/* { dg-final { scan-assembler "jmp\tmemset" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler "call\tmemset" { target ia32 } } } */
+/* { dg-final { scan-assembler "jmp\t_?memset" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler "call\t_?memset" { target ia32 } } } */
/* { dg-final { scan-assembler-not "rep stosb" } } */
void
diff --git a/gcc/testsuite/gcc.target/i386/opt-comi-1.c
b/gcc/testsuite/gcc.target/i386/opt-comi-1.c
index fc7b8632004..a2c5219d98d 100644
--- a/gcc/testsuite/gcc.target/i386/opt-comi-1.c
+++ b/gcc/testsuite/gcc.target/i386/opt-comi-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mfpmath=sse -msse2" } */
+/* { dg-additional-options "-fno-unwind-tables
-fno-asynchronous-unwind-tables" { target *-*-darwin* } } */
/* { dg-final { scan-assembler-times "comiss" 9 } } */
/* { dg-final { scan-assembler-times "set" 9 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr111657-1.c
b/gcc/testsuite/gcc.target/i386/pr111657-1.c
index b80662c2e0a..1ba83c4ca93 100644
--- a/gcc/testsuite/gcc.target/i386/pr111657-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr111657-1.c
@@ -1,8 +1,8 @@
/* { dg-do assemble } */
/* { dg-options "-O2 -mno-sse -mtune=generic -save-temps -fno-pie" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { !
*-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**bar:
@@ -21,6 +21,26 @@
** cmpl \$224, %eax
** jb .L[0-9]+
**...
+*#
+
+* Darwin caches the address of m in rax.
+*Dbar:
+*D...
+*DL[0-9]+:
+*D movl %edx, %ecx
+*D addl \$32, %edx
+*D movq %gs:\(%rax,%rcx\), %r10
+*D movq %gs:8\(%rax,%rcx\), %r9
+*D movq %gs:16\(%rax,%rcx\), %r8
+*D movq %gs:24\(%rax,%rcx\), %rsi
+*D movq %r10, \(%rdi,%rcx\)
+*D movq %r9, 8\(%rdi,%rcx\)
+*D movq %r8, 16\(%rdi,%rcx\)
+*D movq %rsi, 24\(%rdi,%rcx\)
+*D cmpl \$224, %edx
+*D jb L[0-9]+
+*D...
+*E
*/
typedef unsigned long uword __attribute__ ((mode (word)));
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-1a.c
b/gcc/testsuite/gcc.target/i386/pr122343-1a.c
index 75dc2155ff4..907e2319a0d 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-1a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-1a.c
@@ -3,7 +3,8 @@
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
/* { dg-add-options check_function_bodies } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -14,6 +15,16 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects the extern
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rdx
+*D imull \$123, %edi, %eax
+*D addl \(%rdx\), %eax
+*D ret
+*D...
+*E
*/
extern volatile int bar;
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-1b.c
b/gcc/testsuite/gcc.target/i386/pr122343-1b.c
index 56fbd2c7373..0fbe5f8bd9d 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-1b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-1b.c
@@ -3,7 +3,8 @@
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
/* { dg-add-options check_function_bodies } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -15,6 +16,17 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects the extern
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rax
+*D movl \(%rax\), %edx
+*D imull \$123, %edi, %eax
+*D addl %edx, %eax
+*D ret
+*D...
+*E
*/
#include "pr122343-1a.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-2a.c
b/gcc/testsuite/gcc.target/i386/pr122343-2a.c
index ed429d73557..6683b8e4a39 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-2a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-2a.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target *-*-darwin* }
{^\t?\.} } } */
/*
**foo:
@@ -13,6 +13,17 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects accesses to externs.
+*Dfoo:
+*D movq _bar1@GOTPCREL\(%rip\), %rax
+*D movq _bar2@GOTPCREL\(%rip\), %rdx
+*D movl \(%rax\), %eax
+*D addl \(%rdx\), %eax
+*D ret
+*D...
+*E
*/
extern volatile int bar1, bar2;
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-2b.c
b/gcc/testsuite/gcc.target/i386/pr122343-2b.c
index 34014a11d18..685cba7ebd8 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-2b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-2b.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access"
} */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target *-*-darwin* }
{^\t?\.} } } */
/*
**foo:
@@ -14,6 +14,18 @@
** ret
** .cfi_endproc
**...
+*#
+*
+* Darwin indirects accesses to externs.
+*Dfoo:
+*D movq _bar1@GOTPCREL\(%rip\), %rax
+*D movq _bar2@GOTPCREL\(%rip\), %rdx
+*D movl \(%rax\), %eax
+*D movl \(%rdx\), %edx
+*D addl %edx, %eax
+*D ret
+*D...
+*E
*/
#include "pr122343-2a.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-3.c
b/gcc/testsuite/gcc.target/i386/pr122343-3.c
index 7522159076d..d83873d8c7c 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-3.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-3.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -12,6 +12,15 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects the extern.
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rax
+*D addl \$123, \(%rax\)
+*D ret
+*D...
+*E
*/
extern volatile int bar;
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-4a.c
b/gcc/testsuite/gcc.target/i386/pr122343-4a.c
index 6c871627bcd..61dcd87c878 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-4a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-4a.c
@@ -2,7 +2,8 @@
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-add-options check_function_bodies } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -18,6 +19,21 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects the extern.
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rdx
+*D movl \(%rdx\), %eax
+*D movl \(%rdx\), %eax
+*D...
+*D barrier
+*D...
+*D addl \(%rdx\), %eax
+*D subl \(%rdx\), %eax
+*D ret
+*D...
+*E
*/
extern volatile int bar;
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-4b.c
b/gcc/testsuite/gcc.target/i386/pr122343-4b.c
index 4f020371e06..c153570f8a7 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-4b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-4b.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access"
} */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -20,6 +20,23 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects extern accesses
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rdx
+*D movl \(%rdx\), %eax
+*D movl \(%rdx\), %eax
+*D...
+*D barrier
+*D...
+*D movl \(%rdx\), %ecx
+*D movl \(%rdx\), %edx
+*D addl %ecx, %eax
+*D subl %edx, %eax
+*D ret
+*D...
+*E
*/
#include "pr122343-4a.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-5a.c
b/gcc/testsuite/gcc.target/i386/pr122343-5a.c
index 01ce2007c13..62a081c8774 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-5a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-5a.c
@@ -2,8 +2,8 @@
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -14,6 +14,15 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects extern accesses
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rax
+*D imull \$123, %edi, %edi
+*D addl %edi, \(%rax\)
+*D ret
+*E
*/
extern volatile int bar;
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-5b.c
b/gcc/testsuite/gcc.target/i386/pr122343-5b.c
index ecfbe3f1df2..4a9329ccc77 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-5b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-5b.c
@@ -2,8 +2,8 @@
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access"
} */
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -16,6 +16,18 @@
** ret
** .cfi_endproc
**...
+*#
+
+* Darwin indirects extern accesses
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rax
+*D imull \$123, %edi, %edi
+*D movl \(%rax\), %edx
+*D addl %edx, %edi
+*D movl %edi, \(%rax\)
+*D ret
+*D...
+*E
*/
#include "pr122343-5a.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-6a.c
b/gcc/testsuite/gcc.target/i386/pr122343-6a.c
index 843d053d77e..d64935b1b24 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-6a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-6a.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target { *-*-* } } {^\t?\.}
} } */
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -21,6 +21,23 @@
** ret
** .cfi_endproc
**...
+*#
+* Darwin indirects extern accesses
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rax
+*D movl \(%rax\), %edx
+*D movl \(%rax\), %edx
+*D imull \$123, %edx, %ecx
+*D movl %ecx, \(%rax\)
+*D...
+*D barrier
+*D...
+*D movl \(%rax\), %ecx
+*D addl %ecx, %edx
+*D subl %edx, \(%rax\)
+*D ret
+*D...
+*E
*/
extern volatile int bar;
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-6b.c
b/gcc/testsuite/gcc.target/i386/pr122343-6b.c
index dbc79fd8517..05f182682c4 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-6b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-6b.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access"
} */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**foo:
@@ -23,6 +23,25 @@
** ret
** .cfi_endproc
**...
+*#
+* Darwin indirects extern accesses
+*Dfoo:
+*D movq _bar@GOTPCREL\(%rip\), %rax
+*D movl \(%rax\), %edx
+*D movl \(%rax\), %edx
+*D imull \$123, %edx, %ecx
+*D movl %ecx, \(%rax\)
+*D...
+*D barrier
+*D...
+*D movl \(%rax\), %esi
+*D movl \(%rax\), %ecx
+*D addl %esi, %edx
+*D subl %edx, %ecx
+*D movl %ecx, \(%rax\)
+*D ret
+*D...
+*E
*/
#include "pr122343-6a.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr122343-7.c
b/gcc/testsuite/gcc.target/i386/pr122343-7.c
index 15c291801bb..dca23997a25 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-7.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-7.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } }
*/
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* }
} {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* &&
lp64 } } {^\t?\.} } } */
/*
**test:
@@ -16,6 +16,18 @@
** ret
** .cfi_endproc
**...
+*#
+
+*Dtest:
+*D movq _u8@GOTPCREL\(%rip\), %rax
+*D movzbl \(%rax\), %edx
+*D addb %dl, \(%rax\)
+*D movzbl \(%rax\), %edx
+*D subb \(%rax\), %dl
+*D movb %dl, \(%rax\)
+*D ret
+*D...
+*E
*/
extern volatile unsigned char u8;
diff --git a/gcc/testsuite/gcc.target/i386/pr122675-1.c
b/gcc/testsuite/gcc.target/i386/pr122675-1.c
index 0da288a6584..0d89d0dab3f 100644
--- a/gcc/testsuite/gcc.target/i386/pr122675-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr122675-1.c
@@ -13,7 +13,7 @@
** je .L[0-9]*
** subq \$[0-9]*, %rsp
** .cfi_def_cfa_offset [0-9]*
-** call f1
+** call _?f1
** addq \$[0-9]*, %rsp
** .cfi_def_cfa_offset [0-9]*
** ret
diff --git a/gcc/testsuite/gcc.target/i386/pr125351.c
b/gcc/testsuite/gcc.target/i386/pr125351.c
index f21adcae44a..95081b864f2 100644
--- a/gcc/testsuite/gcc.target/i386/pr125351.c
+++ b/gcc/testsuite/gcc.target/i386/pr125351.c
@@ -1,3 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-mptwrite -masm=intel" } */
+/* { dg-skip-if "no intel asm" *-*-darwin* "" "" } */
void foo() { __builtin_ia32_ptwrite32(0); }
diff --git a/gcc/testsuite/gcc.target/i386/pr125355-2.c
b/gcc/testsuite/gcc.target/i386/pr125355-2.c
index b198c7debc8..e34ff07af7b 100644
--- a/gcc/testsuite/gcc.target/i386/pr125355-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr125355-2.c
@@ -7,8 +7,8 @@
/*
**foo.cold:
**...
-** call memmove
-** call abort
+** call _?memmove
+** call _?abort
** .cfi_endproc
**...
*/
diff --git a/gcc/testsuite/gcc.target/i386/pr125355.c
b/gcc/testsuite/gcc.target/i386/pr125355.c
index 4290cfc56f9..9189bffbd04 100644
--- a/gcc/testsuite/gcc.target/i386/pr125355.c
+++ b/gcc/testsuite/gcc.target/i386/pr125355.c
@@ -8,7 +8,7 @@
**foo:
**.LFB0:
** .cfi_startproc
-** jmp memmove
+** jmp _?memmove
** .cfi_endproc
**...
*/
diff --git a/gcc/testsuite/gcc.target/i386/pr92080-17.c
b/gcc/testsuite/gcc.target/i386/pr92080-17.c
index 5b2594bc179..21acad2cc4b 100644
--- a/gcc/testsuite/gcc.target/i386/pr92080-17.c
+++ b/gcc/testsuite/gcc.target/i386/pr92080-17.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64-v3" } */
/* { dg-add-options check_function_bodies } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } }
{^\t?\.} } } */
+/* { dg-final { check-function-bodies "**" "*#" "" { target { { ! ia32 } && {
! *-*-darwin* } } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 &&
*-*-darwin* } } {^\t?\.} } } */
/*
**foo:
@@ -13,6 +13,18 @@
** vmovdqu %xmm0, cost2\(%rip\)
** ret
**...
+*#
+
+*Dfoo:
+*D movq _cost@GOTPCREL\(%rip\), %rax
+*D vpbroadcastw \(%rax\), %xmm0
+*D movq _cost1@GOTPCREL\(%rip\), %rax
+*D vmovq %xmm0, \(%rax\)
+*D movq _cost2@GOTPCREL\(%rip\), %rax
+*D vmovdqu %xmm0, \(%rax\)
+*D ret
+*D...
+*E
*/
extern struct {
diff --git a/gcc/testsuite/gcc.target/i386/prefetchi-1.c
b/gcc/testsuite/gcc.target/i386/prefetchi-1.c
index 03dfdc55e86..e63f25530e1 100644
--- a/gcc/testsuite/gcc.target/i386/prefetchi-1.c
+++ b/gcc/testsuite/gcc.target/i386/prefetchi-1.c
@@ -1,7 +1,7 @@
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-mprefetchi -O2" } */
-/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[
\\t\]+bar\\(%rip\\)" 2 } } */
-/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[
\\t\]+bar\\(%rip\\)" 2 } } */
+/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[
\\t\]+_?bar\\(%rip\\)" 2 } } */
+/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[
\\t\]+_?bar\\(%rip\\)" 2 } } */
#include <x86intrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/prefetchi-1b.c
b/gcc/testsuite/gcc.target/i386/prefetchi-1b.c
index 93139554d3c..832c0240bb2 100644
--- a/gcc/testsuite/gcc.target/i386/prefetchi-1b.c
+++ b/gcc/testsuite/gcc.target/i386/prefetchi-1b.c
@@ -1,7 +1,7 @@
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-mprefetchi -O0" } */
-/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[
\\t\]+bar\\(%rip\\)" 1 } } */
-/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[
\\t\]+bar\\(%rip\\)" 1 } } */
+/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[
\\t\]+_?bar\\(%rip\\)" 1 } } */
+/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[
\\t\]+_?bar\\(%rip\\)" 1 } } */
#include <x86intrin.h>
--
2.50.1 (Apple Git-155)