https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107353
--- Comment #4 from Iain Sandoe <iains at gcc dot gnu.org> --- Emulated TLS targets can test targetm.have_tls. The patch below fixes the fails on Fortran for x86_64-darwin, libgomp in test now. I do not really like that it means pulling in the whole of target.h, and imagine that this will not fix the powerpc64le-linux-gnu cases? The TLS varieties are "ELF" (AFAIU).. so this would not fix things if/when I implement native TLS on Darwin (since that has Mach-O semantics for TLS). so, perhaps there's a better test (or we should make the targetm test more fine-grained). In any event we should not test things that pertain to the platform in the inner loop - but either punt on the whole opt (or choose a different flavour) for other targets. diff --git a/gcc/ipa-visibility.cc b/gcc/ipa-visibility.cc index 3ed2b7cf679..acea49f8b1f 100644 --- a/gcc/ipa-visibility.cc +++ b/gcc/ipa-visibility.cc @@ -86,6 +86,7 @@ along with GCC; see the file COPYING3. If not see #include "ipa-utils.h" #include "stringpool.h" #include "attribs.h" +#include "target.h" /* Return true when NODE cannot be local. Worker for cgraph_local_node_p. */ @@ -873,7 +874,7 @@ function_and_variable_visibility (bool whole_program) } } - if (symtab->state >= IPA_SSA) + if (symtab->state >= IPA_SSA && targetm.have_tls) { FOR_EACH_VARIABLE (vnode) {