summaryrefslogtreecommitdiff
path: root/patches/gcc/3.3.1/pr11864-1-test.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/gcc/3.3.1/pr11864-1-test.patch')
-rw-r--r--patches/gcc/3.3.1/pr11864-1-test.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/patches/gcc/3.3.1/pr11864-1-test.patch b/patches/gcc/3.3.1/pr11864-1-test.patch
new file mode 100644
index 0000000..f5b0d17
--- /dev/null
+++ b/patches/gcc/3.3.1/pr11864-1-test.patch
@@ -0,0 +1,45 @@
+--- /dev/null Sat Dec 14 13:56:51 2002
++++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11864-1.c Sun Sep 14 14:32:24 2003
+@@ -0,0 +1,42 @@
++/* PR optimization/11864
++ * Reporter: Kazumoto Kojima <kkojima@gcc.gnu.org>
++ * 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;
++}