yann@1: --- /dev/null Sat Dec 14 13:56:51 2002 yann@1: +++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11864-1.c Sun Sep 14 14:32:24 2003 yann@1: @@ -0,0 +1,42 @@ yann@1: +/* PR optimization/11864 yann@1: + * Reporter: Kazumoto Kojima yann@1: + * Summary: [3.3/3.4 regression] miscompiles zero extension and test yann@1: + * Description: yann@1: + * gcc-3.3/3.4 -O2 for sh target may miscompile the combination of zero extension yann@1: + * and test if it's zero. yann@1: + * yann@1: + * Testcase tweaked by dank@kegel.com. Not marked as xfail because it's a regression. yann@1: + */ yann@1: +/* { dg-do run } */ yann@1: +/* { dg-options "-O2" } */ yann@1: + yann@1: +extern void abort(void); yann@1: + yann@1: +int val = 0xff00; yann@1: + yann@1: +int f(void) yann@1: +{ yann@1: + return val; yann@1: +} yann@1: + yann@1: +unsigned char a[1]; yann@1: + yann@1: +void foo(void) yann@1: +{ yann@1: + a[0] = f() & 255; yann@1: + yann@1: + if (!a[0]) yann@1: + a[0] = f() & 255; yann@1: + yann@1: + if (!a[0]) yann@1: + a[0] = 1 + (f() & 127); yann@1: +} yann@1: + yann@1: +int main(int argc, char **argv) yann@1: +{ yann@1: + foo(); yann@1: + if (!a[0]) yann@1: + abort(); yann@1: + yann@1: + return 0; yann@1: +}