Thread-local storage on IA64 in ILP32 mode
Mark Mitchell
mark@codesourcery.com
Fri Aug 22 22:56:00 GMT 2003
This small test case (g++.dg/tls/init-1.C) fails on ILP32:
__thread int i = 42;
static int j;
__thread int *p = &j;
/* Note that this is valid in C++ (unlike C) as a run-time initialization. */
int *q = &i;
/* Valid because "const int k" is an integral constant expression in C++. */
__thread const int k = 42;
__thread const int l = k;
The problem is that ia64_expand_move generates invalid instructions.
Do you know what is going wrong here?
Also, doe TLS support require linker and/or dynamic-linker support as
well as assembler support? Right now, whether or not TLS is supported
is purely determined by HAVE_AS_TLS.
Thanks,
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
More information about the Gcc
mailing list