[Bug middle-end/50598] [4.7 Regression] Undefined symbols: "___emutls_v.*", ... on *-apple-darwin*
iains at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 3 18:23:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50598
--- Comment #7 from Iain Sandoe <iains at gcc dot gnu.org> 2011-11-03 18:22:05 UTC ---
$ more ../gcc-live-trunk/libgomp/testsuite/libgomp.c++/pr24455-1.C
// { dg-do compile }
// { dg-require-effective-target tls }
extern int i;
#pragma omp threadprivate (i)
int i;
===
if this is compiled with "-x c " we get:
$ more pr24455-1.s .text
__GLOBAL__sub_I_65535_0_pr24455_1.C:
pushl %ebx
subl $24, %esp
call ___x86.get_pc_thunk.bx
L00000000001$pb:
movl $0, 12(%esp)
movl $4, 8(%esp)
movl $4, 4(%esp)
movl L___emutls_v.i$non_lazy_ptr-L00000000001$pb(%ebx), %eax
movl %eax, (%esp)
call ___emutls_register_common
addl $24, %esp
popl %ebx
ret
.mod_init_func
.align 2
.long __GLOBAL__sub_I_65535_0_pr24455_1.C
.comm ___emutls_v.i,16,2
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
.weak_definition ___x86.get_pc_thunk.bx
.private_extern ___x86.get_pc_thunk.bx
___x86.get_pc_thunk.bx:
movl (%esp), %ebx
ret
.section __IMPORT,__pointers,non_lazy_symbol_pointers
L___emutls_v.i$non_lazy_ptr:
.indirect_symbol ___emutls_v.i
.long 0
.subsections_via_symbols
====
if compiled with g++ we get an empty body (as per comment #4).
the tree-dumps are not very interesting - because the tu shows as empty ...
I'm guessing that somehow g++ is dropping the extern .. which allows the
revised version of cgraphunit to prune the variable .. but I'm not sure how to
go about debugging this at the moment ...
More information about the Gcc-bugs
mailing list