re PR c/20187 (wrong code for ((unsigned char)(unsigned long long)((a?a:1)&(a*b)...
authorRichard Sandiford <richard@codesourcery.com>
Thu, 28 Jul 2005 16:27:22 +0000 (16:27 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 28 Jul 2005 16:27:22 +0000 (16:27 +0000)
PR c/20187
* gcc.c-torture/execute/pr20187-1.c: New test.

From-SVN: r102490

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr20187-1.c [new file with mode: 0644]

index d2382f357ec98482425f6578b2cf6849929f6526..b52b92e8137a922931df04dabef11ad7f66856e9 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-28  Richard Sandiford  <richard@codesourcery.com>
+
+       PR c/20187
+       * gcc.c-torture/execute/pr20187-1.c: New test.
+
 2005-07-28  Jeff Law  <law@redhat.com>
 
        * gcc.dg/tree-ssa/vrp17.c: Update expected output.
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr20187-1.c b/gcc/testsuite/gcc.c-torture/execute/pr20187-1.c
new file mode 100644 (file)
index 0000000..a1f0a09
--- /dev/null
@@ -0,0 +1,15 @@
+int a = 0x101;
+int b = 0x100;
+
+int
+test (void)
+{
+  return (((unsigned char) (unsigned long long) ((a ? a : 1) & (a * b)))
+         ? 0 : 1);
+}
+
+int
+main (void)
+{
+  return 1 - test ();
+}