From: Christoph Mallon Date: Fri, 29 Jun 2007 17:16:44 +0000 (+0000) Subject: Testcase for subtle if conversion bug. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;ds=sidebyside;h=ec2006ff65e813a6fc2f57b08b3637ad016d936c;p=libfirm Testcase for subtle if conversion bug. [r14856] --- diff --git a/ir/be/test/fehler34.c b/ir/be/test/fehler34.c new file mode 100644 index 000000000..ef9992df5 --- /dev/null +++ b/ir/be/test/fehler34.c @@ -0,0 +1,31 @@ +/* Very subtle if conversion bug: print is correct, return value is incorrect */ + +#ifdef __GNUC__ +#define NO_INLINE __attribute__((noinline)) +#else +#define NO_INLINE __declspec(noinline) +#endif + +static inline int f(unsigned int x) +{ + if (x == 0xFFFFFFFF) + return 0; + else + return x; +} + + +unsigned int q = 89497; + + +int NO_INLINE main2(void) +{ + printf("%d = 1\n", f(q) != 0); + return f(q) != 0; +} + + +int main(void) +{ + return !main2(); +}