------- Comment #4 from rguenth at gcc dot gnu dot org 2008-11-02 11:27 ------- The following fails this way with plain -O. The key is the typedef - if you replace the use of UInt32 with unsinged int the testcase succeeds. Mine.
typedef unsigned int UInt32; int Read(unsigned int *processedSize); void FindAndReadSignature(void) { unsigned int numPrevBytes = 31; for (;;) { unsigned int numReadBytes = (1 << 16) - numPrevBytes; unsigned int processedSize; int __result__ = Read(&processedSize); unsigned int numBytesInBuffer = numPrevBytes + processedSize; UInt32 numTests = numBytesInBuffer - 31; for (unsigned int pos = 0; pos < numTests; pos++) ; numPrevBytes = numBytesInBuffer - numTests; } } -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2008-11-02 10:42:12 |2008-11-02 11:27:05 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37991