diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2011-11-08 03:20:30 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2011-11-08 03:20:30 +0000 |
commit | 47180e1668b0766d1e473fed8d9385c0e765285d (patch) | |
tree | 1eb48ad31d05a9ce117bedc17115de96dffa2f0b /libstdc++-v3/src | |
parent | 80b9b1c40004ddf7dd74248b642d489384f37ace (diff) | |
parent | eb6a1d75b768b663579adeb2a50828cf679b6f12 (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.am | 12 | ||||
-rw-r--r-- | libstdc++-v3/src/Makefile.in | 20 | ||||
-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.cc | 18 |
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 |