patches/gcc/3.3.1/pr11864-1-test.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
--- /dev/null	Sat Dec 14 13:56:51 2002
yann@1
     2
+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11864-1.c	Sun Sep 14 14:32:24 2003
yann@1
     3
@@ -0,0 +1,42 @@
yann@1
     4
+/* PR optimization/11864
yann@1
     5
+ * Reporter: Kazumoto Kojima <kkojima@gcc.gnu.org>
yann@1
     6
+ * Summary: [3.3/3.4 regression] miscompiles zero extension and test
yann@1
     7
+ * Description:
yann@1
     8
+ * gcc-3.3/3.4 -O2 for sh target may miscompile the combination of zero extension
yann@1
     9
+ * and test if it's zero.
yann@1
    10
+ *
yann@1
    11
+ * Testcase tweaked by dank@kegel.com.  Not marked as xfail because it's a regression.
yann@1
    12
+ */
yann@1
    13
+/* { dg-do run } */
yann@1
    14
+/* { dg-options "-O2" } */
yann@1
    15
+
yann@1
    16
+extern void abort(void);
yann@1
    17
+
yann@1
    18
+int val = 0xff00;
yann@1
    19
+
yann@1
    20
+int f(void)
yann@1
    21
+{
yann@1
    22
+	return val;
yann@1
    23
+}
yann@1
    24
+
yann@1
    25
+unsigned char a[1];
yann@1
    26
+
yann@1
    27
+void foo(void)
yann@1
    28
+{
yann@1
    29
+	a[0] = f() & 255;
yann@1
    30
+
yann@1
    31
+	if (!a[0])
yann@1
    32
+		a[0] = f() & 255;
yann@1
    33
+
yann@1
    34
+	if (!a[0])
yann@1
    35
+		a[0] = 1 + (f() & 127);
yann@1
    36
+}
yann@1
    37
+
yann@1
    38
+int main(int argc, char **argv)
yann@1
    39
+{
yann@1
    40
+	foo();
yann@1
    41
+	if (!a[0])
yann@1
    42
+		abort();
yann@1
    43
+
yann@1
    44
+	return 0;
yann@1
    45
+}