aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-12-12 13:43:34 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-12-12 13:43:34 +0100
commitef53f36f968942ed111f962ca8ec479f9ed1f0e3 (patch)
tree1a9494e2a90a2af3ce4105c775243f2dd464d302
parent69aef6dcdcebd6f4494d9ca6e3ff7fdfa38ec602 (diff)
downloadgcc-ef53f36f968942ed111f962ca8ec479f9ed1f0e3.zip
gcc-ef53f36f968942ed111f962ca8ec479f9ed1f0e3.tar.gz
gcc-ef53f36f968942ed111f962ca8ec479f9ed1f0e3.tar.bz2
re PR rtl-optimization/64255 (failures with -O2 optimization on i >= 0 ? (unsigned long) i : - (unsigned long) i)
PR rtl-optimization/64255 * gcc.c-torture/execute/pr64255.c: New test. PR rtl-optimization/64260 * gcc.c-torture/execute/pr64260.c: New test. From-SVN: r218665
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr64255.c28
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr64260.c25
3 files changed, 61 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fc4869f..e4eb34b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2014-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/64255
+ * gcc.c-torture/execute/pr64255.c: New test.
+
+ PR rtl-optimization/64260
+ * gcc.c-torture/execute/pr64260.c: New test.
+
2014-12-12 Zhenqiang Chen <zhenqiang.chen@arm.com>
* gcc.dg/pr64007.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr64255.c b/gcc/testsuite/gcc.c-torture/execute/pr64255.c
new file mode 100644
index 0000000..447638a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr64255.c
@@ -0,0 +1,28 @@
+/* PR rtl-optimization/64255 */
+
+__attribute__((noinline, noclone)) void
+bar (long i, unsigned long j)
+{
+ if (i != 1 || j != 1)
+ __builtin_abort ();
+}
+
+__attribute__((noinline, noclone)) void
+foo (long i)
+{
+ unsigned long j;
+
+ if (!i)
+ return;
+ j = i >= 0 ? (unsigned long) i : - (unsigned long) i;
+ if ((i >= 0 ? (unsigned long) i : - (unsigned long) i) != j)
+ __builtin_abort ();
+ bar (i, j);
+}
+
+int
+main ()
+{
+ foo (1);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr64260.c b/gcc/testsuite/gcc.c-torture/execute/pr64260.c
new file mode 100644
index 0000000..e6cd6c2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr64260.c
@@ -0,0 +1,25 @@
+/* PR rtl-optimization/64260 */
+
+int a = 1, b;
+
+void
+foo (char p)
+{
+ int t = 0;
+ for (; b < 1; b++)
+ {
+ int *s = &a;
+ if (--t)
+ *s &= p;
+ *s &= 1;
+ }
+}
+
+int
+main ()
+{
+ foo (0);
+ if (a != 0)
+ __builtin_abort ();
+ return 0;
+}