This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Thread-local storage on IA64 in ILP32 mode


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]