This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch, testsuite] test g++.dg/tls for emutls targets.
On Tue, Apr 06, 2010 at 12:18:03AM -0400, Jack Howarth wrote:
> On Mon, Apr 05, 2010 at 11:17:40PM -0400, Jack Howarth wrote:
> >
> > Iain,
> > There are still a large number of tests in gcc/testsuite that need
> > this fix...
> >
> > testsuite/g++.dg/gomp/clause-3.C:// { dg-require-effective-target tls_native }
> > testsuite/g++.dg/gomp/copyin-1.C:// { dg-require-effective-target tls_native }
> > testsuite/g++.dg/gomp/pr35244.C:// { dg-require-effective-target tls_native }
> > testsuite/g++.dg/gomp/sharing-1.C:/* { dg-require-effective-target tls_native } */
> > testsuite/g++.dg/gomp/tls-1.C:// { dg-require-effective-target tls_native }
> > testsuite/g++.dg/gomp/tls-2.C:/* { dg-require-effective-target tls_native } */
> > testsuite/g++.dg/gomp/tls-3.C:// { dg-require-effective-target tls_native }
> > testsuite/g++.dg/gomp/tls-4.C:// { dg-require-effective-target tls_native }
> > testsuite/gcc.dg/gomp/appendix-a/a.22.1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/appendix-a/a.22.2.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/appendix-a/a.24.1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/appendix-a/a.32.1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/appendix-a/a.33.1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/clause-1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/copyin-1.c:// { dg-require-effective-target tls_native }
> > testsuite/gcc.dg/gomp/pr35244.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/sharing-1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/gomp/tls-1.c:// { dg-require-effective-target tls_native }
> > testsuite/gcc.dg/gomp/tls-2.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/alpha-1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-13.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-14.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-15.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-2.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-3.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-4.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/opt-7.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gcc.dg/tls/section-1.c:/* { dg-require-effective-target tls_native } */
> > testsuite/gfortran.dg/gomp/appendix-a/a.22.1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/appendix-a/a.22.4.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/appendix-a/a.22.5.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/appendix-a/a.22.6.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/appendix-a/a.32.1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/appendix-a/a.33.1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/crayptr2.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/fixed-1.f:C { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/free-1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/omp_threadprivate1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/omp_threadprivate2.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/reduction1.f90:! { dg-require-effective-target tls_native }
> > testsuite/gfortran.dg/gomp/sharing-1.f90:! { dg-require-effective-target tls_native }
> >
> > Can you fix these as well?
> > Jack
>
> Iain,
> After manually changing all of these from tls_native to tls, I am finding in the testsuite/gcc.dg section
> that only the additional failures...
>
> FAIL: gcc.dg/tls/opt-4.c scan-assembler tcc1@
> FAIL: gcc.dg/tls/opt-4.c scan-assembler tcc2@
> FAIL: gcc.dg/tls/opt-4.c scan-assembler-not tcc1[^@]
> FAIL: gcc.dg/tls/opt-4.c scan-assembler-not tcc2[^@]
> FAIL: gcc.dg/tls/section-1.c conflict with user-defined section (test for errors, line 12)
>
> appear. In the case of gcc.dg/tls/opt-4.c, for...
>
> /sw/src/fink.build/gcc45-4.4.999-20100405/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc45-4.4.999-20100405/darwin_objdir/gcc/ /sw/src/fink.build/gcc45-4.4.999-20100405/gcc-4.5-20100405/gcc/testsuite/gcc.dg/tls/opt-4.c -O2 -S -m32 -o opt-4.s
>
> I get...
>
> .text
> .align 4,0x90
> .globl _baz
> _baz:
> pushl %ebp
> movl %esp, %ebp
> pushl %edi
> pushl %esi
> pushl %ebx
> subl $76, %esp
> movl 8(%ebp), %edx
> call ___i686.get_pc_thunk.bx
> "L00000000001$pb":
> movl 12(%ebp), %ecx
> movl (%edx), %edi
> testl %edi, %edi
> je L2
> movl %edx, %esi
> movl %ecx, -60(%ebp)
> .align 4,0x90
> L7:
> testb $8, 4(%edx)
> jne L3
> testb $8, 4(%esi)
> jne L3
> testl %edi, %edi
> jle L3
> movl L___emutls_v.tcc1$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
> movl %edx, -32(%ebp)
> movl %eax, (%esp)
> call L___emutls_get_address$stub
> movl -32(%ebp), %edx
> movl (%eax), %eax
> testl %eax, %eax
> movl %eax, -28(%ebp)
> je L12
> L5:
> movl -28(%ebp), %eax
> testb $64, (%eax,%edi)
> je L3
> movl (%esi), %eax
> movl -60(%ebp), %ecx
> movb %al, (%ecx)
> movl (%edx), %eax
> addl $1, %ecx
> movl %ecx, -60(%ebp)
> testl %eax, %eax
> jne L8
> L9:
> movl -60(%ebp), %eax
> movb $0, (%eax)
> L3:
> addl $8, %esi
> movl (%esi), %edi
> testl %edi, %edi
> jne L7
> L2:
> addl $76, %esp
> xorl %eax, %eax
> popl %ebx
> popl %esi
> popl %edi
> popl %ebp
> ret
> .align 4,0x90
> L8:
> movl -60(%ebp), %ecx
> movb $58, (%ecx)
> addl $1, %ecx
> movl %ecx, -60(%ebp)
> jmp L9
> .align 4,0x90
> L12:
> movl L___emutls_v.tcc2$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
> movl %eax, (%esp)
> call L___emutls_get_address$stub
> movl L___emutls_v.tcc1$non_lazy_ptr-"L00000000001$pb"(%ebx), %ecx
> movl (%eax), %eax
> movl (%eax), %eax
> movl %ecx, (%esp)
> subl $-128, %eax
> movl %eax, -28(%ebp)
> call L___emutls_get_address$stub
> movl -28(%ebp), %ecx
> movl -32(%ebp), %edx
> movl %ecx, (%eax)
> jmp L5
> .section __TEXT,__textcoal_nt,coalesced,pure_instructions
> .weak_definition ___i686.get_pc_thunk.bx
> .private_extern ___i686.get_pc_thunk.bx
> ___i686.get_pc_thunk.bx:
> movl (%esp), %ebx
> ret
> .picsymbol_stub
> L___emutls_get_address$stub:
> .indirect_symbol ___emutls_get_address
> call LPC$1
> LPC$1: popl %eax
> movl L1$lz-LPC$1(%eax),%edx
> jmp *%edx
> L___emutls_get_address$stub_binder:
> lea L1$lz-LPC$1(%eax),%eax
> pushl %eax
> jmp dyld_stub_binding_helper
> .lazy_symbol_pointer
> L1$lz:
> .indirect_symbol ___emutls_get_address
> .long L___emutls_get_address$stub_binder
> .non_lazy_symbol_pointer
> L___emutls_v.tcc1$non_lazy_ptr:
> .indirect_symbol ___emutls_v.tcc1
> .long 0
> L___emutls_v.tcc2$non_lazy_ptr:
> .indirect_symbol ___emutls_v.tcc2
> .long 0
> .subsections_via_symbols
>
> and for gcc.dg/tls/section-1.c with...
>
> /sw/src/fink.build/gcc45-4.4.999-20100405/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc45-4.4.999-20100405/darwin_objdir/gcc/ /sw/src/fink.build/gcc45-4.4.999-20100405/gcc-4.5-20100405/gcc/testsuite/gcc.dg/tls/section-1.c -ansi -pedantic-errors -S -m32 -o section-1.s
>
> I get...
>
> .section foo
> .align 2
> ___emutls_t.i:
> .space 4
> .globl ___emutls_v.i
> .data
> .align 2
> ___emutls_v.i:
> .long 4
> .long 4
> .long 0
> .long ___emutls_t.i
> .section .data
> .align 2
> ___emutls_t.j:
> .space 4
> .globl ___emutls_v.j
> .data
> .align 2
> ___emutls_v.j:
> .long 4
> .long 4
> .long 0
> .long ___emutls_t.j
> .globl _k
> .section bar
> .align 2
> _k:
> .space 4
> .align 2
> ___emutls_t.l:
> .space 4
> .globl ___emutls_v.l
> .data
> .align 2
> ___emutls_v.l:
> .long 4
> .long 4
> .long 0
> .long ___emutls_t.l
> .subsections_via_symbols
Iain,
Out of the complete list above, the only failures introduced by changing tls-native to tls
are...
FAIL: gcc.dg/tls/opt-4.c scan-assembler tcc1@
FAIL: gcc.dg/tls/opt-4.c scan-assembler tcc2@
FAIL: gcc.dg/tls/opt-4.c scan-assembler-not tcc1[^@]
FAIL: gcc.dg/tls/opt-4.c scan-assembler-not tcc2[^@]
FAIL: gcc.dg/tls/section-1.c conflict with user-defined section (test for errors, line 12)
at -m32 on x86_64-apple-darwin10 and...
FAIL: gcc.dg/tls/section-1.c conflict with user-defined section (test for errors, line 12)
at -m64 on x86_64-apple-darwin10. The remainder pass fine.
Jack