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