This is the mail archive of the
mailing list for the GCC project.
Thread-local storage on IA64 in ILP32 mode
- From: Mark Mitchell <mark at codesourcery dot com>
- To: rth at redhat dot com
- Cc: gcc at gcc dot gnu dot org, zack at codesourcery dot com
- Date: Fri, 22 Aug 2003 13:23:15 -0700
- Subject: Thread-local storage on IA64 in ILP32 mode
- Reply-to: mark at codesourcery dot com
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.