[forwarded from http://bugs.debian.org/288721]
This fails with 3.3.5 at -O and higher. Regression from 2.95. Also doesn't fail
on MIPS or Alpha. Debian 3.4.4 20041218 is OK.
void abort(void);
__attribute__((noinline)) void f(unsigned short ad) {
if (ad >= 0x4000 && ad < 0xc000)
abort();
}
int main(void) {
f(0xff00);
return 0;
}
--
Summary: [3.3 regression] Range check on short miscompiled at -O
Product: gcc
Version: 3.3.5
Status: UNCONFIRMED
Keywords: wrong-code
Severity: critical
Priority: P2
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: falk at debian dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i386-linux
GCC host triplet: i386-linux
GCC target triplet: i386-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19296