[RTEMS] Always use atomic builtins for libstdc++
authorSebastian Huber <sebastian.huber@embedded-brains.de>
Fri, 23 Sep 2016 06:58:00 +0000 (06:58 +0000)
committerSebastian Huber <sh@gcc.gnu.org>
Fri, 23 Sep 2016 06:58:00 +0000 (06:58 +0000)
libstdc++-v3/
* config/cpu/m68k/atomicity.h: Adjust comment.
* acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Honor
explicit atomicity_dir setup via configure.host.
* configure.host (rtems-*): Set atomicity_dir.
* configure: Regenerate.

From-SVN: r240387

libstdc++-v3/ChangeLog
libstdc++-v3/acinclude.m4
libstdc++-v3/config/cpu/m68k/atomicity.h
libstdc++-v3/configure
libstdc++-v3/configure.host

index 9376bfbdf2f8ede27803b5d11a2c97be35240f07..81e99e709644629a852dd7278bd52b974ef03aab 100644 (file)
@@ -1,3 +1,11 @@
+2015-09-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+
+       * config/cpu/m68k/atomicity.h: Adjust comment.
+       * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Honor
+       explicit atomicity_dir setup via configure.host.
+       * configure.host (rtems-*): Set atomicity_dir.
+       * configure: Regenerate.
+
 2016-09-22  Jonathan Wakely  <jwakely@redhat.com>
 
        Implement C++17 node extraction and insertion (P0083R5)
index 6d897bed8b1f1e00bec852936bb230a2c399089e..ffead7dfd4c3917180d39b24341654d35fdb088e 100644 (file)
@@ -3489,10 +3489,12 @@ EOF
   CXXFLAGS="$old_CXXFLAGS"
   AC_LANG_RESTORE
 
-  # Set atomicity_dir to builtins if all but the long long test above passes.
-  if test "$glibcxx_cv_atomic_bool" = yes \
+  # Set atomicity_dir to builtins if all but the long long test above passes,
+  # or if the builtins were already chosen (e.g. by configure.host).
+  if { test "$glibcxx_cv_atomic_bool" = yes \
      && test "$glibcxx_cv_atomic_short" = yes \
-     && test "$glibcxx_cv_atomic_int" = yes; then
+     && test "$glibcxx_cv_atomic_int" = yes; } \
+     || test "$atomicity_dir" = "cpu/generic/atomicity_builtins"; then
     AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1,
     [Define if the compiler supports C++11 atomics.])
     atomicity_dir=cpu/generic/atomicity_builtins
index f421330242473dc586d7041b372f80c6c7504554..a9ddc6ba3bf55b9d6f2545c92ba0d6b669b37fbf 100644 (file)
@@ -48,6 +48,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   }
 
 #elif defined(__rtems__)
+  // This code is only provided for reference.  RTEMS uses now the atomic
+  // builtins and libatomic.  See configure.host.
+  //
   // TAS/JBNE is unsafe on systems with strict priority-based scheduling.
   // Disable interrupts, which we can do only from supervisor mode.
   _Atomic_word
index 6332c4d7f87a959002fbf8b5728c64031681e977..ba471b08d102d0c795590beeaa478a7b08880b63 100755 (executable)
@@ -15538,10 +15538,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-  # Set atomicity_dir to builtins if all but the long long test above passes.
-  if test "$glibcxx_cv_atomic_bool" = yes \
+  # Set atomicity_dir to builtins if all but the long long test above passes,
+  # or if the builtins were already chosen (e.g. by configure.host).
+  if { test "$glibcxx_cv_atomic_bool" = yes \
      && test "$glibcxx_cv_atomic_short" = yes \
-     && test "$glibcxx_cv_atomic_int" = yes; then
+     && test "$glibcxx_cv_atomic_int" = yes; } \
+     || test "$atomicity_dir" = "cpu/generic/atomicity_builtins"; then
 
 $as_echo "#define _GLIBCXX_ATOMIC_BUILTINS 1" >>confdefs.h
 
@@ -15573,7 +15575,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 15576 "configure"
+#line 15578 "configure"
 int main()
 {
   _Decimal32 d1;
@@ -15615,7 +15617,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 15618 "configure"
+#line 15620 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
@@ -15649,7 +15651,7 @@ $as_echo "$enable_int128" >&6; }
     rm -f conftest*
 
     cat > conftest.$ac_ext << EOF
-#line 15652 "configure"
+#line 15654 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
index c0cc3ee12852cf97400bf867795d8bbb7b2a9b78..eb56ab12d75c8b8f720c28d1503e2c02d2cbc119 100644 (file)
@@ -296,6 +296,10 @@ case "${host_os}" in
     os_include_dir="os/qnx/qnx6.1"
     c_model=c
     ;;
+  rtems*)
+    # Use libatomic if necessary and avoid libstdc++ specific atomicity support
+    atomicity_dir="cpu/generic/atomicity_builtins"
+    ;;
   solaris2)
     # This too-vague configuration does not provide enough information
     # to select a ctype include, and thus os_include_dir is a crap shoot.