On Linux/x86-64, with checking enabled, revision 147395 http://gcc.gnu.org/ml/gcc-cvs/2009-05/msg00369.html caused FAIL: 26_numerics/random/independent_bits_engine/operators/equal.cc execution test FAIL: 26_numerics/random/independent_bits_engine/operators/serialize.cc execution test with -m32.
Assigning to Honza basing on a comment on the mailing list...
I tried to reproduce the equal.cc fail, for example, and it happens only at -O1 or above, as a "Floating point exception"...
Before dealing with this a middle-end, let me double check the implementation, because I'm seeing something fishy...
Indeed, very fishy: 1UL << 48. Patch forthcoming.
Subject: Bug 40123 Author: paolo Date: Thu May 14 17:56:17 2009 New Revision: 147538 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147538 Log: 2009-05-14 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/40123 * random.tcc (independent_bits_engine<>::operator()()): Use result_type(1), not 1UL. * random.tcc (independent_bits_engine<>::operator()()): Use _M_b.max() and _M_b.min(), instead of this->max() and this->min(). * random.h (_ShiftMin1): Remove, adjust everywhere. * random.tcc: Minor cosmetic changes. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/random.h trunk/libstdc++-v3/include/bits/random.tcc
Fixed.