From: amylaar Date: Fri, 16 Jan 2004 18:43:04 +0000 (+0000) Subject: PR 11864 X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=9dfc7b1d1621aaed332c82cf6f5c733e224de30b PR 11864 From Kazumoto Kojima / Dan Kegel: * gcc.dg/pr11864-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75987 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 573156e2701..d23fe5dc282 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -5,6 +5,10 @@ 2004-01-16 J"orn Rennecke + PR 11864 + From Kazumoto Kojima / Dan Kegel: + * gcc.dg/pr11864-1.c: New test. + PR 10392 From Marcus Comstedt / Dan Kegel: * gcc.dg/pr10392-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr11864-1.c b/gcc/testsuite/gcc.dg/pr11864-1.c new file mode 100644 index 00000000000..b8d7134193d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr11864-1.c @@ -0,0 +1,42 @@ +/* PR optimization/11864 + * Reporter: Kazumoto Kojima + * Summary: [3.3/3.4 regression] miscompiles zero extension and test + * Description: + * gcc-3.3/3.4 -O2 for sh target may miscompile the combination of zero extension + * and test if it's zero. + * + * Testcase tweaked by dank@kegel.com. Not marked as xfail because it's a regression. + */ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern void abort(void); + +int val = 0xff00; + +int f(void) +{ + return val; +} + +unsigned char a[1]; + +void foo(void) +{ + a[0] = f() & 255; + + if (!a[0]) + a[0] = f() & 255; + + if (!a[0]) + a[0] = 1 + (f() & 127); +} + +int main(int argc, char **argv) +{ + foo(); + if (!a[0]) + abort(); + + return 0; +}