http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46460
Summary: shifting producing incorrect result Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: kee...@gmail.com % cat bug.c #include <stdio.h> int main(void) { unsigned int ShouldBeZero; int cnt = 32; ShouldBeZero = 0xFFFFFFFF >> cnt; printf("Should print 0 here: %u\n", ShouldBeZero); return 0; } % cc -o bug bug.c % ./bug Should print 0 here: 4294967295 % cc -o bug -O3 bug.c % ./bug Should print 0 here: 0 % gcc -v Using built-in specs. Target: amd64-undermydesk-freebsd Configured with: FreeBSD/amd64 system compiler Thread model: posix gcc version 4.2.1 20070719 [FreeBSD] % sysctl -a | grep 'hw\.model' hw.model: AMD Phenom(tm) II X4 955 Processor