https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60702
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Iain Sandoe from comment #11) > (In reply to Jakub Jelinek from comment #10) > > Created attachment 45976 [details] > > gcc9-pr60702.patch > > > > Untested fix. > > For emulated TLS on x86_64-Darwin16, this progresses > thread_local12c.C > thread_local12d.C > thread_local12i.C > thread_local12j.C > thread_local12l.C > > which fail without the patch and pass with it, > > thread_local11.C > fails for every instance of _ZTH* > (passes for _ZTW* 2 gimple) Doesn't thread_local-wrap3.C FAIL then as well? If yes, then perhaps: --- gcc/testsuite/g++.dg/tls/thread_local11.C.jj 2019-03-22 15:42:02.506993141 +0100 +++ gcc/testsuite/g++.dg/tls/thread_local11.C 2019-03-22 15:56:11.077364204 +0100 @@ -15,18 +15,18 @@ // { dg-final { scan-tree-dump-times "_ZTWN1T2u6E" 2 "gimple" } } // { dg-final { scan-tree-dump-times "_ZTWN1T2u7E" 2 "gimple" } } // { dg-final { scan-tree-dump-times "_ZTWN1T2u8E" 2 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTH2s1" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTH2s2" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTH2s3" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTH2s4" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u1E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u2E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u3E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u4E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u5E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u6E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u7E" 1 "gimple" } } -// { dg-final { scan-tree-dump-times "_ZTHN1T2u8E" 1 "gimple" } } +// { dg-final { scan-tree-dump-times "_ZTH2s1" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTH2s2" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTH2s3" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTH2s4" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u1E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u2E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u3E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u4E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u5E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u6E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u7E" 1 "gimple" { target tls_native } } } +// { dg-final { scan-tree-dump-times "_ZTHN1T2u8E" 1 "gimple" { target tls_native } } } #include "thread_local11.h" If that test doesn't fail, then perhaps instead: --- gcc/testsuite/g++.dg/tls/thread_local11.C.jj 2019-03-22 15:42:02.506993141 +0100 +++ gcc/testsuite/g++.dg/tls/thread_local11.C 2019-03-22 16:00:08.863486555 +0100 @@ -1,6 +1,7 @@ // PR c++/60702 // { dg-do compile { target c++11 } } // { dg-add-options tls } +// { dg-require-alias "" } // { dg-require-effective-target tls_runtime } // { dg-additional-options "-fdump-tree-gimple" } // { dg-final { scan-tree-dump-times "_ZTW2s1" 2 "gimple" } } (sadly there is no effective target alias).