summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-09-17 05:30:37 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-09-17 05:30:37 +0000
commit51d619308377f16a8ff13df95becfe2282198844 (patch)
tree21b147aea83b41c5c37fba84ea32c18f1c7de253 /libstdc++-v3
parent9b39d7e80300d4a7fc3399d0896881027479b72a (diff)
downloadgcc-51d619308377f16a8ff13df95becfe2282198844.tar.gz
2012-09-17 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 191371 using svnmerge. [gcc/] 2012-09-17 Basile Starynkevitch <basile@starynkevitch.net> {{when merging trunk svn rev 191371}} * melt-runtime.c (melt_load_module_index): Push an empty slot, not a null pointer, into melt_modinfvec. (meltgc_run_c_extension): Push an empty slot, not a null pointer, into melt_extinfvec. (melt_really_initialize): Better indentation, and increase maximal minore size to 32768Kwords. Push an empty slot, not a null pointer, into melt_modinfvec. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@191373 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog73
-rw-r--r--libstdc++-v3/Makefile.in3
-rw-r--r--libstdc++-v3/acinclude.m426
-rwxr-xr-xlibstdc++-v3/configure60
-rw-r--r--libstdc++-v3/configure.ac3
-rw-r--r--libstdc++-v3/doc/Makefile.in3
-rw-r--r--libstdc++-v3/fragment.am2
-rw-r--r--libstdc++-v3/include/Makefile.in23
-rw-r--r--libstdc++-v3/include/ext/random279
-rw-r--r--libstdc++-v3/include/ext/random.tcc69
-rw-r--r--libstdc++-v3/libsupc++/Makefile.in3
-rw-r--r--libstdc++-v3/libsupc++/guard.cc2
-rw-r--r--libstdc++-v3/po/Makefile.in3
-rw-r--r--libstdc++-v3/python/Makefile.in3
-rw-r--r--libstdc++-v3/src/Makefile.in3
-rw-r--r--libstdc++-v3/src/c++11/Makefile.in21
-rw-r--r--libstdc++-v3/src/c++11/random.cc4
-rw-r--r--libstdc++-v3/src/c++98/Makefile.in3
-rw-r--r--libstdc++-v3/testsuite/Makefile.in3
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/cons/default.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/cons/parms.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/equal.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/inequal.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/serialize.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/requirements/explicit_instantiation/1.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/beta_distribution/requirements/typedefs.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/cons/default.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/cons/parms.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/equal.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/inequal.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/serialize.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/requirements/typedefs.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc47
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc47
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc44
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc44
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc51
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc26
-rw-r--r--libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc36
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/copy.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/default.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed1.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed2.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/equal.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/inequal.cc)0
-rw-r--r--libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc (renamed from libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/serialize.cc)0
48 files changed, 816 insertions, 65 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4ecedf818bd..128f7cb0805 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,76 @@
+2012-09-16 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ * include/ext/random.tcc (__gnu_cxx::rice_distribution<>
+ ::__generate_impl): Remove bogus _Adaptor usage.
+
+2012-09-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/ext/random (rice_distribution<>::operator==): Change
+ inline friend definition to non-template.
+ * testsuite/ext/random/rice_distribution/requirements/
+ explicit_instantiation/1.cc: New.
+
+ * testsuite/26_numerics/random/normal_mv_distribution: Move...
+ * testsuite/ext/random/normal_mv_distribution: ... here.
+ * testsuite/26_numerics/random/simd_fast_mersenne_twister_engine:
+ Move...
+ * testsuite/ext/random/simd_fast_mersenne_twister_engine: ... here.
+ * testsuite/26_numerics/random/beta_distribution: Move...
+ * testsuite/ext/random/beta_distribution: ... here.
+ * testsuite/26_numerics/random/rice_distribution: Move...
+ * testsuite/ext/random/rice_distribution: ... here.
+
+2012-09-14 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ * include/ext/random: Add __gnu_cxx::rice_distribution<> class.
+ * include/ext/random.tcc: Add out-of-line functions for
+ __gnu_cxx::rice_distribution<>.
+ * testsuite/26_numerics/random/rice_distribution/
+ operators/equal.cc: New file.
+ * testsuite/26_numerics/random/rice_distribution/
+ operators/serialize.cc: New file.
+ * testsuite/26_numerics/random/rice_distribution/
+ operators/inequal.cc: New file.
+ * testsuite/26_numerics/random/rice_distribution/
+ cons/parms.cc: New file.
+ * testsuite/26_numerics/random/rice_distribution/
+ cons/default.cc: New file.
+ * testsuite/26_numerics/random/rice_distribution/
+ requirements/typedefs.cc: New file.
+
+2012-09-14 David Edelsohn <dje.gcc@gmail.com>
+
+ * configure: Regenerated.
+
+2012-09-14 Jonathan Wakely <jwakely.gcc@gmail.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libstdc++/54576
+ * src/c++11/random.cc: Check if _GLIBCXX_USE_C99_STDINT_TR1 is defined.
+
+2012-09-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (GLIBCXX_CHECK_ASSEMBLER_HWCAP): Define.
+ * configure.ac: Call GLIBCXX_CHECK_ASSEMBLER_HWCAP.
+ * fragment.am (CONFIG_CXXFLAGS): Add $(HWCAP_FLAGS).
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * libsupc++/Makefile.in: Regenerate.
+ * po/Makefile.in: Regenerate.
+ * python/Makefile.in: Regenerate.
+ * src/Makefile.in: Regenerate.
+ * src/c++11/Makefile.in: Regenerate.
+ * src/c++98/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2012-09-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/54172
+ * libsupc++/guard.cc (__cxa_guard_acquire): Fix up the last
+ argument of the first __atomic_compare_exchange_n.
+
2012-09-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
Jonathan Wakely <jwakely.gcc@gmail.com>
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index 1b1c3dd09af..7870fc35c1f 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -174,6 +174,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -318,7 +319,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 794df5c22be..ab26660782e 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -169,6 +169,32 @@ AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [
dnl
+dnl Check if the assembler used supports disabling generation of hardware
+dnl capabilities. This is only supported by Sun as at the moment.
+dnl
+dnl Defines:
+dnl HWCAP_FLAGS='-Wa,-nH' if possible.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_ASSEMBLER_HWCAP], [
+ test -z "$HWCAP_FLAGS" && HWCAP_FLAGS=''
+
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Wa,-nH"
+
+ AC_MSG_CHECKING([for as that supports -Wa,-nH])
+ AC_TRY_COMPILE([], [return 0;], [ac_hwcap_flags=yes],[ac_hwcap_flags=no])
+ if test "$ac_hwcap_flags" = "yes"; then
+ HWCAP_FLAGS="-Wa,-nH $HWCAP_FLAGS"
+ fi
+ AC_MSG_RESULT($ac_hwcap_flags)
+
+ CFLAGS="$ac_save_CFLAGS"
+
+ AC_SUBST(HWCAP_FLAGS)
+])
+
+
+dnl
dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
dnl the native linker is in use, all variables will be defined to something
dnl safe (like an empty string).
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index ff4caf4315c..6ad3e6289fe 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -639,6 +639,7 @@ BUILD_INFO_FALSE
BUILD_INFO_TRUE
baseline_subdir_switch
baseline_dir
+HWCAP_FLAGS
GLIBCXX_LDBL_COMPAT_FALSE
GLIBCXX_LDBL_COMPAT_TRUE
ENABLE_VISIBILITY_FALSE
@@ -8534,6 +8535,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
# AIX 5 now supports IA64 processor
lt_prog_compiler_static='-Bstatic'
fi
+ lt_prog_compiler_pic='-fPIC'
;;
amigaos*)
@@ -11507,7 +11509,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11510 "configure"
+#line 11512 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11613,7 +11615,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11616 "configure"
+#line 11618 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13416,6 +13418,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
# AIX 5 now supports IA64 processor
lt_prog_compiler_static_CXX='-Bstatic'
fi
+ lt_prog_compiler_pic_CXX='-fPIC'
;;
amigaos*)
@@ -14994,7 +14997,7 @@ fi
#
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
cat > conftest.$ac_ext << EOF
-#line 14997 "configure"
+#line 15000 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -15329,7 +15332,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
-#line 15332 "configure"
+#line 15335 "configure"
int main()
{
typedef bool atomic_type;
@@ -15364,7 +15367,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15367 "configure"
+#line 15370 "configure"
int main()
{
typedef short atomic_type;
@@ -15399,7 +15402,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15402 "configure"
+#line 15405 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@@ -15435,7 +15438,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15438 "configure"
+#line 15441 "configure"
int main()
{
typedef long long atomic_type;
@@ -15514,7 +15517,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 15517 "configure"
+#line 15520 "configure"
int main()
{
_Decimal32 d1;
@@ -15556,7 +15559,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 15559 "configure"
+#line 15562 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -15590,7 +15593,7 @@ $as_echo "$enable_int128" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15593 "configure"
+#line 15596 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -70647,6 +70650,43 @@ $as_echo "#define _GLIBCXX_LONG_DOUBLE_COMPAT 1" >>confdefs.h
esac
+# Check if assembler supports disabling hardware capability support.
+
+ test -z "$HWCAP_FLAGS" && HWCAP_FLAGS=''
+
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Wa,-nH"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for as that supports -Wa,-nH" >&5
+$as_echo_n "checking for as that supports -Wa,-nH... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hwcap_flags=yes
+else
+ ac_hwcap_flags=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test "$ac_hwcap_flags" = "yes"; then
+ HWCAP_FLAGS="-Wa,-nH $HWCAP_FLAGS"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_hwcap_flags" >&5
+$as_echo "$ac_hwcap_flags" >&6; }
+
+ CFLAGS="$ac_save_CFLAGS"
+
+
+
+
# Check if assembler supports rdrand opcode.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rdrand support in assembler" >&5
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index c09c685e099..559a811be41 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -333,6 +333,9 @@ case "$target" in
esac
GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
+# Check if assembler supports disabling hardware capability support.
+GLIBCXX_CHECK_ASSEMBLER_HWCAP
+
# Check if assembler supports rdrand opcode.
GLIBCXX_CHECK_X86_RDRAND
diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in
index 9161e69c200..9b1c7eddec1 100644
--- a/libstdc++-v3/doc/Makefile.in
+++ b/libstdc++-v3/doc/Makefile.in
@@ -146,6 +146,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -300,7 +301,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/fragment.am b/libstdc++-v3/fragment.am
index 304d39637d9..64247afbe24 100644
--- a/libstdc++-v3/fragment.am
+++ b/libstdc++-v3/fragment.am
@@ -22,7 +22,7 @@ endif
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index c5537295ff9..eb8bd1f032b 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -146,6 +146,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -290,7 +291,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
@@ -1199,7 +1200,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/fragment.am:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1235,15 +1235,10 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
diff --git a/libstdc++-v3/include/ext/random b/libstdc++-v3/include/ext/random
index 6bb438a8558..e53204074fc 100644
--- a/libstdc++-v3/include/ext/random
+++ b/libstdc++-v3/include/ext/random
@@ -87,7 +87,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ seed(__sd); }
template<typename _Sseq, typename = typename
- std::enable_if<!std::is_same<_Sseq, simd_fast_mersenne_twister_engine>::value>
+ std::enable_if<!std::is_same<_Sseq,
+ simd_fast_mersenne_twister_engine>::value>
::type>
explicit
simd_fast_mersenne_twister_engine(_Sseq& __q)
@@ -149,7 +150,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _CharT, typename _Traits>
friend std::basic_ostream<_CharT, _Traits>&
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
- const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType_2,
+ const __gnu_cxx::simd_fast_mersenne_twister_engine
+ <_UIntType_2,
__m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2,
__msk1_2, __msk2_2, __msk3_2, __msk4_2,
__parity1_2, __parity2_2, __parity3_2, __parity4_2>& __x);
@@ -532,16 +534,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ this->__generate_impl(__f, __t, __urng, __p); }
/**
- * @brief Return true if two beta distributions have the same
- * parameters and the sequences that would be generated
- * are equal.
- */
- friend bool
- operator==(const beta_distribution& __d1,
- const beta_distribution& __d2)
- { return __d1.param() == __d2.param(); }
-
- /**
* @brief Inserts a %beta_distribution random number distribution
* @p __x into the output stream @p __os.
*
@@ -582,13 +574,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
/**
+ * @brief Return true if two beta distributions have the same
+ * parameters and the sequences that would be generated
+ * are equal.
+ */
+ template<typename _RealType>
+ inline bool
+ operator==(const __gnu_cxx::beta_distribution<_RealType>& __d1,
+ const __gnu_cxx::beta_distribution<_RealType>& __d2)
+ { return __d1.param() == __d2.param(); }
+
+ /**
* @brief Return true if two beta distributions are different.
*/
- template<typename _RealType>
- inline bool
- operator!=(const __gnu_cxx::beta_distribution<_RealType>& __d1,
- const __gnu_cxx::beta_distribution<_RealType>& __d2)
- { return !(__d1 == __d2); }
+ template<typename _RealType>
+ inline bool
+ operator!=(const __gnu_cxx::beta_distribution<_RealType>& __d1,
+ const __gnu_cxx::beta_distribution<_RealType>& __d2)
+ { return !(__d1 == __d2); }
/**
@@ -896,6 +899,248 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return !(__d1 == __d2); }
+ /**
+ * @brief A Rice continuous distribution for random numbers.
+ *
+ * The formula for the Rice probability density function is
+ * @f[
+ * p(x|\nu,\sigma) = \frac{x}{\sigma^2}
+ * \exp\left(-\frac{x^2+\nu^2}{2\sigma^2}\right)
+ * I_0\left(\frac{x \nu}{\sigma^2}\right)
+ * @f]
+ * where @f$I_0(z)@f$ is the modified Bessel function of the first kind
+ * of order 0 and @f$\nu >= 0@f$ and @f$\sigma > 0@f$.
+ *
+ * <table border=1 cellpadding=10 cellspacing=0>
+ * <caption align=top>Distribution Statistics</caption>
+ * <tr><td>Mean</td><td>@f$\sqrt{\pi/2}L_{1/2}(-\nu^2/2\sigma^2)@f$</td></tr>
+ * <tr><td>Variance</td><td>@f$2\sigma^2 + \nu^2
+ * + (\pi\sigma^2/2)L^2_{1/2}(-\nu^2/2\sigma^2)@f$</td></tr>
+ * <tr><td>Range</td><td>@f$[0, \infty)@f$</td></tr>
+ * </table>
+ * where @f$L_{1/2}(x)@f$ is the Laguerre polynomial of order 1/2.
+ */
+ template<typename _RealType = double>
+ class
+ rice_distribution
+ {
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+ public:
+ /** The type of the range of the distribution. */
+ typedef _RealType result_type;
+ /** Parameter type. */
+ struct param_type
+ {
+ typedef rice_distribution<result_type> distribution_type;
+
+ param_type(result_type __nu = result_type(0),
+ result_type __sigma = result_type(1))
+ : _M_nu(__nu), _M_sigma(__sigma)
+ {
+ _GLIBCXX_DEBUG_ASSERT(_M_nu >= result_type(0));
+ _GLIBCXX_DEBUG_ASSERT(_M_sigma > result_type(0));
+ }
+
+ result_type
+ nu() const
+ { return _M_nu; }
+
+ result_type
+ sigma() const
+ { return _M_sigma; }
+
+ friend bool
+ operator==(const param_type& __p1, const param_type& __p2)
+ { return __p1._M_nu == __p2._M_nu
+ && __p1._M_sigma == __p2._M_sigma; }
+
+ private:
+ void _M_initialize();
+
+ result_type _M_nu;
+ result_type _M_sigma;
+ };
+
+ /**
+ * @brief Constructors.
+ */
+ explicit
+ rice_distribution(result_type __nu = result_type(0),
+ result_type __sigma = result_type(1))
+ : _M_param(__nu, __sigma),
+ _M_ndx(__nu, __sigma),
+ _M_ndy(result_type(0), __sigma)
+ { }
+
+ explicit
+ rice_distribution(const param_type& __p)
+ : _M_param(__p),
+ _M_ndx(__p.nu(), __p.sigma()),
+ _M_ndy(result_type(0), __p.sigma())
+ { }
+
+ /**
+ * @brief Resets the distribution state.
+ */
+ void
+ reset()
+ {
+ _M_ndx.reset();
+ _M_ndy.reset();
+ }
+
+ /**
+ * @brief Return the parameters of the distribution.
+ */
+ result_type
+ nu() const
+ { return _M_param.nu(); }
+
+ result_type
+ sigma() const
+ { return _M_param.sigma(); }
+
+ /**
+ * @brief Returns the parameter set of the distribution.
+ */
+ param_type
+ param() const
+ { return _M_param; }
+
+ /**
+ * @brief Sets the parameter set of the distribution.
+ * @param __param The new parameter set of the distribution.
+ */
+ void
+ param(const param_type& __param)
+ { _M_param = __param; }
+
+ /**
+ * @brief Returns the greatest lower bound value of the distribution.
+ */
+ result_type
+ min() const
+ { return result_type(0); }
+
+ /**
+ * @brief Returns the least upper bound value of the distribution.
+ */
+ result_type
+ max() const
+ { return std::numeric_limits<result_type>::max(); }
+
+ /**
+ * @brief Generating functions.
+ */
+ template<typename _UniformRandomNumberGenerator>
+ result_type
+ operator()(_UniformRandomNumberGenerator& __urng)
+ {
+ result_type __x = this->_M_ndx(__urng);
+ result_type __y = this->_M_ndy(__urng);
+ return std::hypot(__x, __y);
+ }
+
+ template<typename _UniformRandomNumberGenerator>
+ result_type
+ operator()(_UniformRandomNumberGenerator& __urng,
+ const param_type& __p)
+ {
+ typename std::normal_distribution<result_type>::param_type
+ __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma());
+ result_type __x = this->_M_ndx(__px, __urng);
+ result_type __y = this->_M_ndy(__py, __urng);
+ return std::hypot(__x, __y);
+ }
+
+ template<typename _ForwardIterator,
+ typename _UniformRandomNumberGenerator>
+ void
+ __generate(_ForwardIterator __f, _ForwardIterator __t,
+ _UniformRandomNumberGenerator& __urng)
+ { this->__generate(__f, __t, __urng, this->param()); }
+
+ template<typename _ForwardIterator,
+ typename _UniformRandomNumberGenerator>
+ void
+ __generate(_ForwardIterator __f, _ForwardIterator __t,
+ _UniformRandomNumberGenerator& __urng,
+ const param_type& __p)
+ { this->__generate_impl(__f, __t, __urng, __p); }
+
+ template<typename _UniformRandomNumberGenerator>
+ void
+ __generate(result_type* __f, result_type* __t,
+ _UniformRandomNumberGenerator& __urng,
+ const param_type& __p)
+ { this->__generate_impl(__f, __t, __urng, __p); }
+
+ /**
+ * @brief Return true if two Rice distributions have
+ * the same parameters and the sequences that would
+ * be generated are equal.
+ */
+ friend bool
+ operator==(const rice_distribution& __d1,
+ const rice_distribution& __d2)
+ { return (__d1.param() == __d2.param()
+ && __d1._M_ndx == __d2._M_ndx
+ && __d1._M_ndy == __d2._M_ndy); }
+
+ /**
+ * @brief Inserts a %rice_distribution random number distribution
+ * @p __x into the output stream @p __os.
+ *
+ * @param __os An output stream.
+ * @param __x A %rice_distribution random number distribution.
+ *
+ * @returns The output stream with the state of @p __x inserted or in
+ * an error state.
+ */
+ template<typename _RealType1, typename _CharT, typename _Traits>
+ friend std::basic_ostream<_CharT, _Traits>&
+ operator<<(std::basic_ostream<_CharT, _Traits>&,
+ const rice_distribution<_RealType1>&);
+
+ /**
+ * @brief Extracts a %rice_distribution random number distribution
+ * @p __x from the input stream @p __is.
+ *
+ * @param __is An input stream.
+ * @param __x A %rice_distribution random number
+ * generator engine.
+ *
+ * @returns The input stream with @p __x extracted or in an error state.
+ */
+ template<typename _RealType1, typename _CharT, typename _Traits>
+ friend std::basic_istream<_CharT, _Traits>&
+ operator>>(std::basic_istream<_CharT, _Traits>&,
+ rice_distribution<_RealType1>&);
+
+ private:
+ template<typename _ForwardIterator,
+ typename _UniformRandomNumberGenerator>
+ void
+ __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
+ _UniformRandomNumberGenerator& __urng,
+ const param_type& __p);
+
+ param_type _M_param;
+
+ std::normal_distribution<result_type> _M_ndx;
+ std::normal_distribution<result_type> _M_ndy;
+ };
+
+ /**
+ * @brief Return true if two Rice distributions are not equal.
+ */
+ template<typename _RealType1>
+ inline bool
+ operator!=(const rice_distribution<_RealType1>& __d1,
+ const rice_distribution<_RealType1>& __d2)
+ { return !(__d1 == __d2); }
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
diff --git a/libstdc++-v3/include/ext/random.tcc b/libstdc++-v3/include/ext/random.tcc
index 988dc222829..24735b41120 100644
--- a/libstdc++-v3/include/ext/random.tcc
+++ b/libstdc++-v3/include/ext/random.tcc
@@ -751,6 +751,75 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
+ template<typename _RealType>
+ template<typename _OutputIterator,
+ typename _UniformRandomNumberGenerator>
+ void
+ rice_distribution<_RealType>::
+ __generate_impl(_OutputIterator __f, _OutputIterator __t,
+ _UniformRandomNumberGenerator& __urng,
+ const param_type& __p)
+ {
+ __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator>)
+
+ while (__f != __t)
+ {
+ typename std::normal_distribution<result_type>::param_type
+ __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma());
+ result_type __x = this->_M_ndx(__px, __urng);
+ result_type __y = this->_M_ndy(__py, __urng);
+ *__f++ = std::hypot(__x, __y);
+ }
+ }
+
+ template<typename _RealType, typename _CharT, typename _Traits>
+ std::basic_ostream<_CharT, _Traits>&
+ operator<<(std::basic_ostream<_CharT, _Traits>& __os,
+ const rice_distribution<_RealType>& __x)
+ {
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
+ const _CharT __fill = __os.fill();
+ const std::streamsize __precision = __os.precision();
+ const _CharT __space = __os.widen(' ');
+ __os.flags(__ios_base::scientific | __ios_base::left);
+ __os.fill(__space);
+ __os.precision(std::numeric_limits<_RealType>::max_digits10);
+
+ __os << __x.nu() << __space << __x.sigma();
+ __os << __space << __x._M_ndx;
+ __os << __space << __x._M_ndy;
+
+ __os.flags(__flags);
+ __os.fill(__fill);
+ __os.precision(__precision);
+ return __os;
+ }
+
+ template<typename _RealType, typename _CharT, typename _Traits>
+ std::basic_istream<_CharT, _Traits>&
+ operator>>(std::basic_istream<_CharT, _Traits>& __is,
+ rice_distribution<_RealType>& __x)
+ {
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
+
+ _RealType __nu, __sigma;
+ __is >> __nu >> __sigma;
+ __is >> __x._M_ndx;
+ __is >> __x._M_ndy;
+ __x.param(typename rice_distribution<_RealType>::
+ param_type(__nu, __sigma));
+
+ __is.flags(__flags);
+ return __is;
+ }
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index 4399c3db057..fc53994a144 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -212,6 +212,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -356,7 +357,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc
index 60165cdecb4..f8550c03fae 100644
--- a/libstdc++-v3/libsupc++/guard.cc
+++ b/libstdc++-v3/libsupc++/guard.cc
@@ -253,7 +253,7 @@ namespace __cxxabiv1
int expected(0);
if (__atomic_compare_exchange_n(gi, &expected, pending_bit, false,
__ATOMIC_ACQ_REL,
- __ATOMIC_RELAXED))
+ __ATOMIC_ACQUIRE))
{
// This thread should do the initialization.
return 1;
diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
index 4dbaea1c15a..a03bd3829a1 100644
--- a/libstdc++-v3/po/Makefile.in
+++ b/libstdc++-v3/po/Makefile.in
@@ -146,6 +146,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -290,7 +291,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/python/Makefile.in b/libstdc++-v3/python/Makefile.in
index 9467c70494f..cf5d87116db 100644
--- a/libstdc++-v3/python/Makefile.in
+++ b/libstdc++-v3/python/Makefile.in
@@ -176,6 +176,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -320,7 +321,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index f797d19b7f8..8dbabc36949 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -205,6 +205,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -349,7 +350,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/src/c++11/Makefile.in b/libstdc++-v3/src/c++11/Makefile.in
index af26eaf002d..1d265760569 100644
--- a/libstdc++-v3/src/c++11/Makefile.in
+++ b/libstdc++-v3/src/c++11/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -163,6 +163,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -307,7 +308,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
@@ -427,7 +428,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/fragment.am:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -446,7 +446,7 @@ clean-noinstLTLIBRARIES:
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
-libc++11convenience.la: $(libc__11convenience_la_OBJECTS) $(libc__11convenience_la_DEPENDENCIES) $(EXTRA_libc__11convenience_la_DEPENDENCIES)
+libc++11convenience.la: $(libc__11convenience_la_OBJECTS) $(libc__11convenience_la_DEPENDENCIES)
$(CXXLINK) $(libc__11convenience_la_OBJECTS) $(libc__11convenience_la_LIBADD) $(LIBS)
mostlyclean-compile:
@@ -535,15 +535,10 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
diff --git a/libstdc++-v3/src/c++11/random.cc b/libstdc++-v3/src/c++11/random.cc
index 4342df4d546..9280e15089f 100644
--- a/libstdc++-v3/src/c++11/random.cc
+++ b/libstdc++-v3/src/c++11/random.cc
@@ -24,6 +24,8 @@
#include <random>
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
#if defined __i386__ || defined __x86_64__
# include <cpuid.h>
#endif
@@ -142,5 +144,5 @@ namespace std _GLIBCXX_VISIBILITY(default)
0xffffffffUL, 7,
0x9d2c5680UL, 15,
0xefc60000UL, 18, 1812433253UL>;
-
}
+#endif
diff --git a/libstdc++-v3/src/c++98/Makefile.in b/libstdc++-v3/src/c++98/Makefile.in
index 2ee02719c44..be5781e0f5d 100644
--- a/libstdc++-v3/src/c++98/Makefile.in
+++ b/libstdc++-v3/src/c++98/Makefile.in
@@ -178,6 +178,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -322,7 +323,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
index e919747e734..b33cdf15bc9 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -146,6 +146,7 @@ FGREP = @FGREP@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_LIBS = @GLIBCXX_LIBS@
GREP = @GREP@
+HWCAP_FLAGS = @HWCAP_FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -293,7 +294,7 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
# These bits are all figured out from configure. Look in acinclude.m4
# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
+ $(SECTION_FLAGS) $(HWCAP_FLAGS) $(EXTRA_CXX_FLAGS) -frandom-seed=$@
WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/cons/default.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
index 3aa2d851e98..3aa2d851e98 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/cons/default.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/cons/parms.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
index 9d6c0b18da7..9d6c0b18da7 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/cons/parms.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/equal.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
index a31a6545d53..a31a6545d53 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/equal.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/inequal.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
index d7eda3935bf..d7eda3935bf 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/inequal.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/serialize.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
index dd2fed8d590..dd2fed8d590 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/operators/serialize.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
index a572b1478ae..a572b1478ae 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/requirements/explicit_instantiation/1.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/requirements/typedefs.cc b/libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
index 33b18ae535c..33b18ae535c 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/beta_distribution/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/cons/default.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
index a51fde40f03..a51fde40f03 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/cons/default.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/cons/parms.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
index d12722183e1..d12722183e1 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/cons/parms.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/equal.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
index 99b75817947..99b75817947 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/equal.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/inequal.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
index 80472a13214..80472a13214 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/inequal.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/serialize.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
index 3620a9b12bc..3620a9b12bc 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/operators/serialize.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
index 55c4431a972..55c4431a972 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/requirements/typedefs.cc b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
index 4a0a14c9020..4a0a14c9020 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/normal_mv_distribution/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
new file mode 100644
index 00000000000..3a49140fcb9
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
@@ -0,0 +1,47 @@
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+//
+// 2012-01-28 Edward M. Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 26.4.8.3.* Class template rice_distribution [rand.dist.ext.rice]
+// 26.4.2.4 Concept RandomNumberDistribution [rand.concept.dist]
+
+#include <ext/random>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::rice_distribution<> u;
+ VERIFY( u.nu() == 0.0 );
+ VERIFY( u.sigma() == 1.0 );
+ VERIFY( u.min() == 0.0 );
+ typedef __gnu_cxx::rice_distribution<>::result_type result_type;
+ VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
new file mode 100644
index 00000000000..fa79ef521ae
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
@@ -0,0 +1,47 @@
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+//
+// 2012-01-28 Edward M. Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 26.4.8.3.* Class template rice_distribution [rand.dist.ext.rice]
+// 26.4.2.4 Concept RandomNumberDistribution [rand.concept.dist]
+
+#include <ext/random>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::rice_distribution<> u(1.5, 3.0);
+ VERIFY( u.nu() == 1.5 );
+ VERIFY( u.sigma() == 3.0 );
+ VERIFY( u.min() == 0.0 );
+ typedef __gnu_cxx::rice_distribution<>::result_type result_type;
+ VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
new file mode 100644
index 00000000000..2539d6ed42b
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+//
+// 2012-01-28 Edward M. Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 26.5.8.4.5 Class template rice_distribution [rand.dist.ext.rice]
+
+#include <ext/random>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::rice_distribution<double> u(2.0, 3.0), v, w;
+
+ VERIFY( v == w );
+ VERIFY( !(u == v) );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
new file mode 100644
index 00000000000..a3f15124af9
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+//
+// 2012-01-28 Edward M. Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 26.5.8.4.5 Class template rice_distribution [rand.dist.ext.rice]
+
+#include <ext/random>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::rice_distribution<double> u(2.0, 3.0), v, w;
+
+ VERIFY( u != v );
+ VERIFY( !(v != w) );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
new file mode 100644
index 00000000000..9d39c3098e5
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
@@ -0,0 +1,51 @@
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+//
+// 2012-01-28 Edward M. Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 26.4.8.3.* Class template rice_distribution [rand.dist.ext.rice]
+// 26.4.2.4 Concept RandomNumberDistribution [rand.concept.dist]
+
+#include <ext/random>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::stringstream str;
+ __gnu_cxx::rice_distribution<double> u(1.5, 3.0), v;
+ std::minstd_rand0 rng;
+
+ u(rng); // advance
+ str << u;
+
+ str >> v;
+ VERIFY( u == v );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
new file mode 100644
index 00000000000..2026c9ec51d
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// { dg-options "-std=c++11" }
+// { dg-require-cstdint "" }
+//
+// Copyright (C) 2012 Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/random>
+
+template class __gnu_cxx::rice_distribution<float>;
+template class __gnu_cxx::rice_distribution<double>;
+template class __gnu_cxx::rice_distribution<long double>;
diff --git a/libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc b/libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
new file mode 100644
index 00000000000..b524a7b5aa3
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
@@ -0,0 +1,36 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+//
+// 2012-01-28 Edward M. Smith-Rowland <3dw4rd@verizon.net>
+//
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 26.4.8.3.* Class template rice_distribution [rand.dist.ext.rice]
+// 26.4.2.4 Concept RandomNumberDistribution [rand.concept.dist]
+
+#include <ext/random>
+
+void
+test01()
+{
+ typedef __gnu_cxx::rice_distribution<double> test_type;
+
+ typedef test_type::result_type result_type;
+ typedef test_type::param_type param_type;
+}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/copy.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
index 8371f4628fa..8371f4628fa 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/copy.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/default.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
index 5b6489a4028..5b6489a4028 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/default.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed1.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
index 1926958ea4e..1926958ea4e 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed2.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
index 464512c4521..464512c4521 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
index 4820fa493d9..4820fa493d9 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/equal.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
index 80022a68d89..80022a68d89 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/equal.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/inequal.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
index 15aaf127814..15aaf127814 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/serialize.cc b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
index ddc62b5605e..ddc62b5605e 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
+++ b/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc