author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Sun Jul 08 11:02:38 2007 +0000 (2007-07-08) | |
changeset 216 | 8520332106c9 |
permissions | -rw-r--r-- |
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 |
+} |