]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/54612 (Many failures in ext/random testsuite)
authorPaolo Carlini <paolo.carlini@oracle.com>
Tue, 18 Sep 2012 14:02:20 +0000 (14:02 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Tue, 18 Sep 2012 14:02:20 +0000 (14:02 +0000)
2012-09-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/54612
* include/ext/random.tcc (operator==
(const __gnu_cxx::simd_fast_mersenne_twister_engine<>&,
const __gnu_cxx::simd_fast_mersenne_twister_engine<>&)): Fix
state_size use.
* config/cpu/i486/opt/ext/opt_random.h: Guard with __SSE2__.

From-SVN: r191424

libstdc++-v3/ChangeLog
libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
libstdc++-v3/include/ext/random.tcc

index f56df9aebc1858926b9b0cf1b13d1bd50dd50309..a687a48ccb062c620ce6d041072f40ec400d566a 100644 (file)
@@ -1,3 +1,12 @@
+2012-09-18  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR libstdc++/54612
+       * include/ext/random.tcc (operator==
+       (const __gnu_cxx::simd_fast_mersenne_twister_engine<>&,
+       const __gnu_cxx::simd_fast_mersenne_twister_engine<>&)): Fix
+       state_size use.
+       * config/cpu/i486/opt/ext/opt_random.h: Guard with __SSE2__.
+
 2012-09-17  Ulrich Drepper  <drepper@gmail.com>
 
        * configure.ac: Substitute CPU_OPT_EXT_RANDOM.
index cd06f3f342d86eccd0038ae801e25513d51699b0..968b1c18bf2b388e681bcb713a27a65c3c5864bc 100644 (file)
@@ -32,6 +32,7 @@
 
 #pragma GCC system_header
 
+#ifdef __SSE2__
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 {
@@ -130,5 +131,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
+#endif // __SSE2__
 
 #endif // _EXT_OPT_RANDOM_H
index eca8772f7676bcfb391afe044c2abc823013719c..07001379415b5af018d0fe13c4f614834460e88e 100644 (file)
@@ -328,7 +328,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               __msk1, __msk2, __msk3, __msk4,
               __parity1, __parity2, __parity3, __parity4>& __rhs)
     {
-      return (std::equal(__lhs._M_stateT, __lhs._M_stateT + state_size,
+      typedef __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType,
+              __m, __pos1, __sl1, __sl2, __sr1, __sr2,
+              __msk1, __msk2, __msk3, __msk4,
+              __parity1, __parity2, __parity3, __parity4> __engine;
+      return (std::equal(__lhs._M_stateT,
+                        __lhs._M_stateT + __engine::state_size,
                         __rhs._M_stateT)
              && __lhs._M_pos == __rhs._M_pos);
     }