From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8598 invoked by alias); 15 Jun 2002 17:46:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 8549 invoked by uid 71); 15 Jun 2002 17:46:00 -0000 Resent-Date: 15 Jun 2002 17:46:00 -0000 Resent-Message-ID: <20020615174600.8548.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, alphonse@lri.fr Received: (qmail 8069 invoked by uid 61); 15 Jun 2002 17:44:23 -0000 Message-Id: <20020615174423.8068.qmail@sources.redhat.com> Date: Sat, 15 Jun 2002 11:06:00 -0000 From: alphonse@lri.fr Reply-To: alphonse@lri.fr To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/7041: a.out gives different results when compiled by g++ 3.1 and g++ 3.1 -O X-SW-Source: 2002-06/txt/msg00348.txt.bz2 List-Id: >Number: 7041 >Category: optimization >Synopsis: a.out gives different results when compiled by g++ 3.1 and g++ 3.1 -O >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Jun 15 10:46:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: alphonse >Release: g++-3.1.1 (GCC) 3.1.1 (Mandrake Linux 8.3 3.1.1-0.2mdk) >Organization: >Environment: Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.1.1/specs Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --enable-long-long --with-gxx-include-dir=/usr/include/g++-v31 --enable-languages=c,c++,f77,objc,java --host=i586-mandrake-linux-gnu --with-system-zlib Thread model: posix gcc version 3.1.1 (Mandrake Linux 8.3 3.1.1-0.2mdk) >Description: the behaviour of a C++ version of the mersenne-twister pseudo-random number generator is wrong when compiled with -O (and greater). The C version works fine. I have simplified the source code in such a way it outputs only the first number. I reproduce the problem by running : 1066# g++ -Wall test.cpp test.cpp: In function `int main()': test.cpp:63: warning: unused variable `prng gen' 1067# a.out 2629073562d /* correct result */ 1068# g++ -Wall -O test.cpp test.cpp: In function `int main()': test.cpp:63: warning: unused variable `prng gen' 1069# a.out 2983301384d /* incorrect result */ Congratulation for your work, Erick Alphonse. >How-To-Repeat: #include typedef unsigned long ui32; class prng { enum {N = 624, // length of state vector M = 397, // period parameter MAGIC = 0x9908B0DFU}; // magic constant ui32 state[N]; // internal state ui32 *next; // next value to get from state int left; // number of values left before reload needed ui32 hiBit(const ui32 u) {return u&0x80000000U;} // mask all but highest bit of u ui32 loBit(const ui32 u) {return u&0x00000001U;} // mask all but lowest bit of u ui32 loBits(const ui32 u) {return u&0x7fffffffU;} // mask the highest bit of u ui32 mixBits(const ui32 u,const ui32 v) {return hiBit(u) | loBits(v);} ui32 twist(const ui32 m,const ui32 s0,const ui32 s1) { return m ^ (mixBits(s0,s1)>>1) ^ (loBit(s1) ? MAGIC : 0U); } // Generate N new values in state void reload(); public: prng(const ui32 seed); // initializes with a simple ui32 }; inline void prng::reload() { register ui32 *p = state; register int i; for( i = N - M; i--; ) *p++ = twist( p[M], p[0], p[1] ); for( i = M; --i; ) *p++ = twist( p[M-N], p[0], p[1] ); *p = twist( p[M-N], p[0], state[0] ); left = N, next = state; printf("%lud\n",*state); } inline prng::prng(const ui32 seed) { register ui32 j; state[0]= seed & 0xffffffffUL; for (j=1; j> 30)) + j); /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ /* In the previous versions, MSBs of the seed affect */ /* only MSBs of the array state[]. */ /* 2002/01/09 modified by Makoto Matsumoto */ state[j] &= 0xffffffffUL; /* for >32 bit machines */ } reload(); } int main() { prng gen(1); } >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="test.ii.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test.ii.gz" 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