[Bug other/49144] New: [4.6/4.7 regression] miscompiled reverse_iterator?
doko at ubuntu dot com
gcc-bugzilla@gcc.gnu.org
Tue May 24 17:21:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49144
Summary: [4.6/4.7 regression] miscompiled reverse_iterator?
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: doko@ubuntu.com
[forwarded from http://bugs.debian.org/PR627795]
seen with 4.6 r174102 and trunk r173903
The attached test program is supposed to print -42, and does so when compiled
with g++-4.4 or g++-4.5. However, it outputs random junk when compiled with
g++-4.6:
$ g++ -Wall -O2 test.cxx
$ ./a.out
31
$ ./a.out
207
$ ./a.out
79
#include <iostream>
int f()
{
unsigned char data[3] = { 42, 42, 42 };
unsigned char *begin = data;
unsigned char *end = data + 3;
std::reverse_iterator<unsigned char *> reversed(end);
for (; begin < end; begin++, reversed++)
if (*reversed != 42)
return *reversed;
return -42;
}
int main(int argc, char ** argv)
{
std::cout << f() << "\n";
}
More information about the Gcc-bugs
mailing list