ext/random/hypergeometric_distribution/operators/values.cc fails to compile on Solaris 9 which lacks full C99 support in libc/libm:
FAIL: ext/random/hypergeometric_distribution/operators/values.cc (test for excess errors) Excess errors: /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/ext/random/hypergeometric_dis tribution/operators/values.cc:41:45: error: 'hypergeometric_pdf' was not declare d in this scope /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/ext/random/hypergeometric_dis tribution/operators/values.cc:46:48: error: 'hypergeometric_pdf' was not declare d in this scope /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/ext/random/hypergeometric_dis tribution/operators/values.cc:51:47: error: 'hypergeometric_pdf' was not declare d in this scope /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/util/testsuite_random.h:56:7: error: void value not ignored as it ought to be /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/util/testsuite_random.h:56:7: error: void value not ignored as it ought to be /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/util/testsuite_random.h:56:7: error: void value not ignored as it ought to be WARNING: ext/random/hypergeometric_distribution/operators/values.cc compilation failed to produce executable hypergeometric_pdf is defined in testsuite/util/testsuite_random.h inside _GLIBCXX_USE_C99_MATH_TR1, but used unconditionally. Fixed which the following patch which allows the test to compile and pass on i386-pc-solaris2.9. On i386-pc-solaris2.11, it FAILs with an Arithmetic exception, as it did before the patch: Program received signal SIGFPE, Arithmetic exception. [Switching to Thread 1 (LWP 1)] 0x080542ba in std::generate_canonical<unsigned int, 32u, std::mersenne_twister_engine<unsigned int, 32u, 624u, 397u, 31u, 2567483615u, 11u, 4294967295u, 7u, 2636928640u, 15u, 4022730752u, 18u, 1812433253u> > (__urng=...) at /var/gcc/regression/trunk/11-gcc/build/i386-pc-solaris2.11/libstdc++-v3/include/bits/random.tcc:3480 3480 return __sum / __tmp; __tmp is 0 here. Ok for mainline? Rainer 2013-11-27 Rainer Orth <r...@cebitec.uni-bielefeld.de> * testsuite/ext/random/hypergeometric_distribution/operators/values.cc (test01): Wrap in _GLIBCXX_USE_C99_MATH_TR1.
diff --git a/libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc b/libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc --- a/libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc +++ b/libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc @@ -31,6 +31,7 @@ void test01() { +#if _GLIBCXX_USE_C99_MATH_TR1 using namespace __gnu_test; std::mt19937 eng; @@ -49,6 +50,7 @@ test01() auto bhd3 = std::bind(hd3, eng); testDiscreteDist(bhd3, [](int k) { return hypergeometric_pdf(k, 100, 20, 5); }); +#endif } int
-- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University