On Sat, Jun 6, 2026 at 11:37 AM Iain Sandoe <[email protected]> wrote: > > 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.
Is this patch still needed if so then the patch is ok. > > 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) >
