From: Sebastian Huber <sebastian.huber@embedded-brains.de>
To: gcc-patches@gcc.gnu.org
Cc: libstdc++@gcc.gnu.org, devel@rtems.org,
Sebastian Huber <sebastian.huber@embedded-brains.de>
Subject: [PATCH v2] [RTEMS] Always use atomic builtins for libstdc++
Date: Thu, 22 Sep 2016 08:50:00 -0000 [thread overview]
Message-ID: <1474534063-8867-1-git-send-email-sebastian.huber@embedded-brains.de> (raw)
v2: Fix shell script part since shell grouping is expressed by { }.
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.
---
libstdc++-v3/acinclude.m4 | 5 +++--
libstdc++-v3/config/cpu/m68k/atomicity.h | 3 +++
libstdc++-v3/configure | 11 ++++++-----
libstdc++-v3/configure.host | 4 ++++
4 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 6d897be..d7db435 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3490,9 +3490,10 @@ EOF
AC_LANG_RESTORE
# Set atomicity_dir to builtins if all but the long long test above passes.
- if test "$glibcxx_cv_atomic_bool" = yes \
+ 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
diff --git a/libstdc++-v3/config/cpu/m68k/atomicity.h b/libstdc++-v3/config/cpu/m68k/atomicity.h
index f421330..a9ddc6b 100644
--- a/libstdc++-v3/config/cpu/m68k/atomicity.h
+++ b/libstdc++-v3/config/cpu/m68k/atomicity.h
@@ -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
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 6332c4d..d09a7e0 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -15539,9 +15539,10 @@ 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 \
+ 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 +15574,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 15577 "configure"
int main()
{
_Decimal32 d1;
@@ -15615,7 +15616,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 15618 "configure"
+#line 15619 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -15649,7 +15650,7 @@ $as_echo "$enable_int128" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15652 "configure"
+#line 15653 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index c0cc3ee..eb56ab1 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -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.
--
1.8.4.5
next reply other threads:[~2016-09-22 8:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-22 8:50 Sebastian Huber [this message]
2016-09-22 9:24 ` Andreas Schwab
2016-09-22 19:12 ` Bernhard Reutner-Fischer
2016-09-26 9:15 ` Andreas Schwab
2016-09-26 15:59 ` Bernhard Reutner-Fischer
2016-09-26 16:28 ` Andreas Schwab
[not found] ` <CAF9ehCW0mR1E-iz6wPP3ST3rRixZJvLh+cfGXQ8mpa9UfeLJ5g@mail.gmail.com>
2016-09-22 13:40 ` Sebastian Huber
2016-09-23 7:21 ` Sebastian Huber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1474534063-8867-1-git-send-email-sebastian.huber@embedded-brains.de \
--to=sebastian.huber@embedded-brains.de \
--cc=devel@rtems.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=libstdc++@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).