[gcc r17-1473] testsuite, c, x86, Darwin: Adjust func body scan tests for Darwin ABI/asm.
Iain D Sandoe
iains@gcc.gnu.org
Wed Jun 10 18:45:10 GMT 2026
https://gcc.gnu.org/g:a60e825a1e0b59f58d2e88897a5ab8ca66e808a8
commit r17-1473-ga60e825a1e0b59f58d2e88897a5ab8ca66e808a8
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Sun May 31 19:47:26 2026 +0100
testsuite, c, x86, Darwin: Adjust func body scan tests for Darwin ABI/asm.
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/pr111657-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/pr122343-3.c: Likewise.
* gcc.target/i386/pr122343-4a.c: Likewise.
* gcc.target/i386/pr122343-4b.c: Likewise.
* gcc.target/i386/pr122343-5a.c: Likewise.
* gcc.target/i386/pr122343-5b.c: Likewise.
* gcc.target/i386/pr122343-6a.c: Likewise.
* gcc.target/i386/pr122343-6b.c: Likewise.
* gcc.target/i386/pr122343-7.c: Likewise.
* gcc.target/i386/pr122675-1.c: Likewise.
* gcc.target/i386/pr125351.c: Likewise.
* gcc.target/i386/pr125355-2.c: Likewise.
* gcc.target/i386/pr125355.c: Likewise.
* gcc.target/i386/pr92080-17.c: Likewise.
* gcc.target/i386/prefetchi-1.c: Likewise.
* gcc.target/i386/prefetchi-1b.c: Likewise.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
Diff:
---
gcc/testsuite/gcc.target/i386/builtin-memmove-13.c | 13 ++++++++-
gcc/testsuite/gcc.target/i386/cf_check-11.c | 2 +-
gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c | 32 ++++++++++++++++++++--
gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c | 4 +--
gcc/testsuite/gcc.target/i386/memset-pr120683-10.c | 18 ++++++++++--
gcc/testsuite/gcc.target/i386/memset-pr120683-20.c | 26 ++++++++++++++++--
gcc/testsuite/gcc.target/i386/memset-pr120683-21.c | 26 ++++++++++++++++--
gcc/testsuite/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 | 16 +++++++++--
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, 336 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 d25ebe74e116..4d11cd718fc4 100644
--- a/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
+++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -fno-pie" } */
/* 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:
@@ -14,6 +15,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 9ed65ab0ad5d..7457eeb9484b 100644
--- a/gcc/testsuite/gcc.target/i386/cf_check-11.c
+++ b/gcc/testsuite/gcc.target/i386/cf_check-11.c
@@ -21,4 +21,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 753238e35fce..12d56c055ce4 100644
--- a/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
+++ b/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mno-sse -mmemcpy-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
-/* 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:
@@ -31,6 +31,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 109bd675a51b..773c919f18bf 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 6d3d9e750e92..a450dbbe3364 100644
--- a/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
+++ b/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
-/* 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:
@@ -17,6 +17,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 273e84c358e9..da72c62d0c89 100644
--- a/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
+++ b/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
-/* 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:
@@ -25,6 +25,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 3e473267fd66..2cc30d55c124 100644
--- a/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
+++ b/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
-/* 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:
@@ -25,6 +25,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 685d6e5a5c21..57f25211bd27 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 fc7b8632004e..a2c5219d98df 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 6e8516a30835..b499695f4263 100644
--- a/gcc/testsuite/gcc.target/i386/pr111657-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr111657-1.c
@@ -1,7 +1,7 @@
/* { dg-do assemble } */
/* { dg-options "-O2 -mno-sse -mtune=generic -save-temps -fno-pie" } */
-/* 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:
@@ -20,6 +20,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 7076d8811747..12efa1b6848a 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-1a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-1a.c
@@ -2,7 +2,8 @@
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
/* 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:
@@ -13,6 +14,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 989d3b23a78f..a687ce7bf419 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-1b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-1b.c
@@ -2,7 +2,8 @@
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
/* 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,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 f7ee02149ce6..6683b8e4a399 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-2a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-2a.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
-/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
-/* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+/* { dg-add-options check_function_bodies } */
+/* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
+/* { dg-final { check-function-bodies "*D" "*E" "" { target *-*-darwin* } {^\t?\.} } } */
/*
**foo:
@@ -12,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 d4a1151a5862..2472f50c8fe6 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-2b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-2b.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
-/* 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,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 335f777d2a9a..7ff957825eb5 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-3.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-3.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
-/* 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:
@@ -11,6 +11,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 3ae07a27cf1c..2426742b6d2d 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-4a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-4a.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* 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:
@@ -17,6 +18,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 31a990eb3630..45f75b3e484a 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-4b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-4b.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
-/* 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:
@@ -19,6 +19,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 3d133b671577..b093ff05d48b 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-5a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-5a.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
-/* 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:
@@ -13,6 +13,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 5f64496d6f45..16e8f05eaa3b 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-5b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-5b.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
/* { dg-additional-options "-mregparm=1" { target ia32 } } */
-/* 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 +15,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 940182644c7e..cdc4e5d2a462 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-6a.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-6a.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
-/* 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\), %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 f741f5ca98c7..dc9adc14a451 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-6b.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-6b.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
-/* 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:
@@ -22,6 +22,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 0e4edd1e5e71..97cee196c036 100644
--- a/gcc/testsuite/gcc.target/i386/pr122343-7.c
+++ b/gcc/testsuite/gcc.target/i386/pr122343-7.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
-/* 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:
@@ -15,6 +15,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 9239a3208556..d51a5f96b896 100644
--- a/gcc/testsuite/gcc.target/i386/pr122675-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr122675-1.c
@@ -12,7 +12,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 f21adcae44a3..95081b864f26 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 2c0c396d8967..719c93c69a7b 100644
--- a/gcc/testsuite/gcc.target/i386/pr125355-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr125355-2.c
@@ -6,8 +6,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 8e56b5f5507b..7509852be03f 100644
--- a/gcc/testsuite/gcc.target/i386/pr125355.c
+++ b/gcc/testsuite/gcc.target/i386/pr125355.c
@@ -7,7 +7,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 f3d6b6917546..8c1c4d0a1c6e 100644
--- a/gcc/testsuite/gcc.target/i386/pr92080-17.c
+++ b/gcc/testsuite/gcc.target/i386/pr92080-17.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64-v3" } */
-/* 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:
@@ -12,6 +12,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 03dfdc55e86c..e63f25530e14 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 93139554d3cd..832c0240bb22 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>
More information about the Gcc-cvs
mailing list