config.h.in: Regenerate.
authorVarvara Rainchik <varvara.rainchik@intel.com>
Wed, 10 Dec 2014 13:42:20 +0000 (13:42 +0000)
committerKirill Yukhin <kyukhin@gcc.gnu.org>
Wed, 10 Dec 2014 13:42:20 +0000 (13:42 +0000)
libgomp/
        * config.h.in: Regenerate.
        * configure: Regenerate.
        * configure.ac: Add GCC_CHECK_EMUTLS.
        * libgomp.h: Add check for USE_EMUTLS: this case
        is equal to HAVE_TLS.
        * team.c: Likewise.

From-SVN: r218576

libgomp/ChangeLog
libgomp/config.h.in
libgomp/configure
libgomp/configure.ac
libgomp/libgomp.h
libgomp/team.c

index 97b607f0533402ac2b9400cff597bcd6e4f6cc19..acf45fb00af8dcb8f89afdc3c5542b815ca8d137 100644 (file)
@@ -1,3 +1,12 @@
+2014-12-09  Varvara Rainchik  <varvara.rainchik@intel.com>
+
+       * config.h.in: Regenerate.
+       * configure: Regenerate.
+       * configure.ac: Add GCC_CHECK_EMUTLS.
+       * libgomp.h: Add check for USE_EMUTLS: this case
+       is equal to HAVE_TLS.
+       * team.c: Likewise.
+
 2014-12-03  Uros Bizjak  <ubizjak@gmail.com>
 
        * configure.tgt (x86_64-*-linux*): Tune -m32 multilib to generic.
index 94a2b3b3b32490d29ea2faa5a14471dba7cb68e1..a5e27ca4eaf84d95514b45d7fa70bd2d4bcb9858 100644 (file)
@@ -79,6 +79,9 @@
 /* Define to 1 if the target supports thread-local storage. */
 #undef HAVE_TLS
 
+/* Define to 1 if the target use emutls for thread-local storage. */
+#undef USE_EMUTLS
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
index bff5c62947e26157c38a09c0e75fe7ea6356d855..f5d6b6b57bad0b10a5a3d98987a984ebbe392ed9 100755 (executable)
@@ -15515,6 +15515,37 @@ $as_echo "#define HAVE_TLS 1" >>confdefs.h
 
   fi
 
+# See if we have emulated thread-local storage.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the thread-local storage support is from emutls" >&5
+$as_echo_n "checking whether the thread-local storage support is from emutls... " >&6; }
+if test "${gcc_cv_use_emutls+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    gcc_cv_use_emutls=no
+    echo '__thread int a; int b; int main() { return a = b; }' > conftest.c
+    if { ac_try='${CC-cc} -Werror -S -o conftest.s conftest.c 1>&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      if grep __emutls_get_address conftest.s > /dev/null; then
+       gcc_cv_use_emutls=yes
+      fi
+    fi
+    rm -f conftest.*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_use_emutls" >&5
+$as_echo "$gcc_cv_use_emutls" >&6; }
+  if test "$gcc_cv_use_emutls" = "yes" ; then
+
+$as_echo "#define USE_EMUTLS 1" >>confdefs.h
+
+  fi
+
 # See what sort of export controls are available.
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports hidden visibility" >&5
index cea63660c5a599a0a2dea48a7351b12b1242ff1d..16ec158a79e14d852c1f12ad1beef2ad0f61c6cf 100644 (file)
@@ -245,6 +245,9 @@ fi
 # See if we support thread-local storage.
 GCC_CHECK_TLS
 
+# See if we have emulated thread-local storage.
+GCC_CHECK_EMUTLS
+
 # See what sort of export controls are available.
 LIBGOMP_CHECK_ATTRIBUTE_VISIBILITY
 LIBGOMP_CHECK_ATTRIBUTE_DLLEXPORT
index a1482ccfbf4c23ce865beb0edb3a92c0884e2b63..b694356f67edb6ae49818246873096ad1ad69719 100644 (file)
@@ -471,7 +471,7 @@ enum gomp_cancel_kind
 
 /* ... and here is that TLS data.  */
 
-#ifdef HAVE_TLS
+#if defined HAVE_TLS || defined USE_EMUTLS
 extern __thread struct gomp_thread gomp_tls_data;
 static inline struct gomp_thread *gomp_thread (void)
 {
index e6a6d8ff67970345f3eb2b53e72e8c327aade442..594127ca13292c621c41da62972cb59ebcddf84e 100644 (file)
@@ -37,7 +37,7 @@ pthread_key_t gomp_thread_destructor;
 
 
 /* This is the libgomp per-thread data structure.  */
-#ifdef HAVE_TLS
+#if defined HAVE_TLS || defined USE_EMUTLS
 __thread struct gomp_thread gomp_tls_data;
 #else
 pthread_key_t gomp_tls_key;
@@ -70,7 +70,7 @@ gomp_thread_start (void *xdata)
   void (*local_fn) (void *);
   void *local_data;
 
-#ifdef HAVE_TLS
+#if defined HAVE_TLS || defined USE_EMUTLS
   thr = &gomp_tls_data;
 #else
   struct gomp_thread local_thr;
@@ -916,7 +916,7 @@ gomp_team_end (void)
 static void __attribute__((constructor))
 initialize_team (void)
 {
-#ifndef HAVE_TLS
+#if !defined HAVE_TLS && !defined USE_EMUTLS
   static struct gomp_thread initial_thread_tls_data;
 
   pthread_key_create (&gomp_tls_key, NULL);