aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/src
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2011-11-08 03:20:30 +0000
committerAldy Hernandez <aldyh@redhat.com>2011-11-08 03:20:30 +0000
commit47180e1668b0766d1e473fed8d9385c0e765285d (patch)
tree1eb48ad31d05a9ce117bedc17115de96dffa2f0b /libstdc++-v3/src
parent80b9b1c40004ddf7dd74248b642d489384f37ace (diff)
parenteb6a1d75b768b663579adeb2a50828cf679b6f12 (diff)
* Merge from mainline rev 181122.transactional-memory
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/transactional-memory@181148 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r--libstdc++-v3/src/Makefile.am12
-rw-r--r--libstdc++-v3/src/Makefile.in20
-rw-r--r--libstdc++-v3/src/compatibility-atomic-c++0x.cc (renamed from libstdc++-v3/src/atomic.cc)20
-rw-r--r--libstdc++-v3/src/thread.cc18
4 files changed, 50 insertions, 20 deletions
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 5a6cb970822..eefa6e269a0 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -190,13 +190,13 @@ endif
# Sources present in the src directory, always present.
sources = \
- atomic.cc \
bitmap_allocator.cc \
pool_allocator.cc \
mt_allocator.cc \
codecvt.cc \
compatibility.cc \
compatibility-c++0x.cc \
+ compatibility-atomic-c++0x.cc \
compatibility-debug_list.cc \
compatibility-debug_list-2.cc \
compatibility-list.cc \
@@ -323,6 +323,11 @@ compatibility-c++0x.lo: compatibility-c++0x.cc
compatibility-c++0x.o: compatibility-c++0x.cc
$(CXXCOMPILE) -std=gnu++0x -c $<
+compatibility-atomic-c++0x.lo: compatibility-atomic-c++0x.cc
+ $(LTCXXCOMPILE) -std=gnu++0x -c $<
+compatibility-atomic-c++0x.o: compatibility-atomic-c++0x.cc
+ $(CXXCOMPILE) -std=gnu++0x -c $<
+
functional.lo: functional.cc
$(LTCXXCOMPILE) -std=gnu++0x -c $<
functional.o: functional.cc
@@ -343,11 +348,6 @@ limits.lo: limits.cc
limits.o: limits.cc
$(CXXCOMPILE) -std=gnu++0x -c $<
-atomic.lo: atomic.cc
- $(LTCXXCOMPILE) -std=gnu++0x -c $<
-atomic.o: atomic.cc
- $(CXXCOMPILE) -std=gnu++0x -c $<
-
fstream-inst.lo: fstream-inst.cc
$(LTCXXCOMPILE) -std=gnu++0x -c $<
fstream-inst.o: fstream-inst.cc
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 5d31fb20c41..4b2646e4a05 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -105,9 +105,9 @@ am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.lo
am__objects_5 = basic_file.lo c++locale.lo $(am__objects_2) \
$(am__objects_3) $(am__objects_4)
-am__objects_6 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
- mt_allocator.lo codecvt.lo compatibility.lo \
- compatibility-c++0x.lo compatibility-debug_list.lo \
+am__objects_6 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
+ codecvt.lo compatibility.lo compatibility-c++0x.lo \
+ compatibility-atomic-c++0x.lo compatibility-debug_list.lo \
compatibility-debug_list-2.lo compatibility-list.lo \
compatibility-list-2.lo complex_io.lo ctype.lo debug.lo \
functexcept.lo functional.lo globals_io.lo hash_c++0x.lo \
@@ -277,7 +277,6 @@ glibcxx_builddir = @glibcxx_builddir@
glibcxx_localedir = @glibcxx_localedir@
glibcxx_prefixdir = @glibcxx_prefixdir@
glibcxx_srcdir = @glibcxx_srcdir@
-glibcxx_thread_h = @glibcxx_thread_h@
glibcxx_toolexecdir = @glibcxx_toolexecdir@
glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
gxx_include_dir = @gxx_include_dir@
@@ -317,6 +316,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+toplevel_builddir = @toplevel_builddir@
toplevel_srcdir = @toplevel_srcdir@
# May be used by various substitution variables.
@@ -407,13 +407,13 @@ host_sources_extra = \
# Sources present in the src directory, always present.
sources = \
- atomic.cc \
bitmap_allocator.cc \
pool_allocator.cc \
mt_allocator.cc \
codecvt.cc \
compatibility.cc \
compatibility-c++0x.cc \
+ compatibility-atomic-c++0x.cc \
compatibility-debug_list.cc \
compatibility-debug_list-2.cc \
compatibility-list.cc \
@@ -917,6 +917,11 @@ compatibility-c++0x.lo: compatibility-c++0x.cc
compatibility-c++0x.o: compatibility-c++0x.cc
$(CXXCOMPILE) -std=gnu++0x -c $<
+compatibility-atomic-c++0x.lo: compatibility-atomic-c++0x.cc
+ $(LTCXXCOMPILE) -std=gnu++0x -c $<
+compatibility-atomic-c++0x.o: compatibility-atomic-c++0x.cc
+ $(CXXCOMPILE) -std=gnu++0x -c $<
+
functional.lo: functional.cc
$(LTCXXCOMPILE) -std=gnu++0x -c $<
functional.o: functional.cc
@@ -937,11 +942,6 @@ limits.lo: limits.cc
limits.o: limits.cc
$(CXXCOMPILE) -std=gnu++0x -c $<
-atomic.lo: atomic.cc
- $(LTCXXCOMPILE) -std=gnu++0x -c $<
-atomic.o: atomic.cc
- $(CXXCOMPILE) -std=gnu++0x -c $<
-
fstream-inst.lo: fstream-inst.cc
$(LTCXXCOMPILE) -std=gnu++0x -c $<
fstream-inst.o: fstream-inst.cc
diff --git a/libstdc++-v3/src/atomic.cc b/libstdc++-v3/src/compatibility-atomic-c++0x.cc
index 5752d39feed..1ee0d7e35a8 100644
--- a/libstdc++-v3/src/atomic.cc
+++ b/libstdc++-v3/src/compatibility-atomic-c++0x.cc
@@ -1,4 +1,4 @@
-// Support for atomic operations -*- C++ -*-
+// <atomic> compatibility -*- C++ -*-
// Copyright (C) 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
@@ -27,6 +27,9 @@
#include <atomic>
#include <mutex>
+// XXX GLIBCXX_ABI Deprecated
+// gcc-4.7.0
+
#define LOGSIZE 4
namespace
@@ -55,6 +58,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
namespace __atomic0
{
+
+ struct atomic_flag : public __atomic_flag_base
+ {
+ bool
+ test_and_set(memory_order) noexcept;
+
+ void
+ clear(memory_order) noexcept;
+ };
+
bool
atomic_flag::test_and_set(memory_order) noexcept
{
@@ -74,6 +87,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_M_i = false;
}
+ } // namespace __atomic0
_GLIBCXX_BEGIN_EXTERN_C
@@ -116,10 +130,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_GLIBCXX_END_EXTERN_C
- } // namespace __atomic0
-
_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
+} // namespace std
// XXX GLIBCXX_ABI Deprecated
diff --git a/libstdc++-v3/src/thread.cc b/libstdc++-v3/src/thread.cc
index 09e7fc5909d..ff034b16143 100644
--- a/libstdc++-v3/src/thread.cc
+++ b/libstdc++-v3/src/thread.cc
@@ -30,9 +30,27 @@
#if defined(_GLIBCXX_USE_GET_NPROCS)
# include <sys/sysinfo.h>
# define _GLIBCXX_NPROCS get_nprocs()
+#elif defined(_GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP)
+# define _GLIBCXX_NPROCS pthread_num_processors_np()
+#elif defined(_GLIBCXX_USE_SYSCTL_HW_NCPU)
+# include <stddef.h>
+# include <sys/sysctl.h>
+static inline int get_nprocs()
+{
+ int count;
+ size_t size = sizeof(count);
+ int mib[] = { CTL_HW, HW_NCPU };
+ if (!sysctl(mib, 2, &count, &size, NULL, 0))
+ return count;
+ return 0;
+}
+# define _GLIBCXX_NPROCS get_nprocs()
#elif defined(_GLIBCXX_USE_SC_NPROCESSORS_ONLN)
# include <unistd.h>
# define _GLIBCXX_NPROCS sysconf(_SC_NPROCESSORS_ONLN)
+#elif defined(_GLIBCXX_USE_SC_NPROC_ONLN)
+# include <unistd.h>
+# define _GLIBCXX_NPROCS sysconf(_SC_NPROC_ONLN)
#else
# define _GLIBCXX_NPROCS 0
#endif