http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46019
Summary: [4.3/4.4/4.5/4.6 Regression] x / (0x200000000ULL << y) miscompilation with 32-bit HWI Product: gcc Version: 4.6.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: ada AssignedTo: ja...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org extern void abort (void); int main (void) { unsigned long long l = 0x40000000000ULL; int n; for (n = 0; n < 8; n++) if (l / (0x200000000ULL << n) != (0x200 >> n)) abort (); return 0; } is miscompiled on 32-bit HWI targets, e.g. i?86-linux, since PR26026 fix.