[PATCH 3/3] Add new test cases for wrapped binop simplification.
Robin Dapp
rdapp@linux.ibm.com
Tue Aug 13 08:35:00 GMT 2019
---
.../gcc.dg/tree-ssa/copy-headers-5.c | 2 +-
.../gcc.dg/tree-ssa/copy-headers-7.c | 2 +-
.../gcc.dg/wrapped-binop-simplify-run.c | 52 ++++++++++++++++
.../gcc.dg/wrapped-binop-simplify-signed-1.c | 60 +++++++++++++++++++
.../wrapped-binop-simplify-unsigned-1.c | 36 +++++++++++
5 files changed, 150 insertions(+), 2 deletions(-)
create mode 100644 gcc/testsuite/gcc.dg/wrapped-binop-simplify-run.c
create mode 100644 gcc/testsuite/gcc.dg/wrapped-binop-simplify-signed-1.c
create mode 100644 gcc/testsuite/gcc.dg/wrapped-binop-simplify-unsigned-1.c
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-5.c b/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-5.c
index 3d9940558cb..7f2e4dc2e4d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ch2-details" } */
+/* { dg-options "-O2 -fno-tree-ccp -fno-tree-vrp -fdump-tree-ch2-details" } */
int is_sorted(int *a, int n)
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c b/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c
index a0a6e6a9b57..12fca8fd2c4 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ch2-details --param logical-op-non-short-circuit=0" } */
+/* { dg-options "-O2 -fdump-tree-ch2-details -fno-tree-ccp -fno-tree-vrp --param logical-op-non-short-circuit=0" } */
int is_sorted(int *a, int n, int m, int k)
{
diff --git a/gcc/testsuite/gcc.dg/wrapped-binop-simplify-run.c b/gcc/testsuite/gcc.dg/wrapped-binop-simplify-run.c
new file mode 100644
index 00000000000..06bf348f1c6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/wrapped-binop-simplify-run.c
@@ -0,0 +1,52 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+#include <assert.h>
+#include <limits.h>
+
+unsigned int a = 3;
+int aa = 3;
+int bb = 1;
+int cc = 4;
+
+__attribute__((noinline))
+long foo(int a)
+{
+ if (a >= -30 && a <= -20)
+ return (long)(a + 10) + LONG_MAX;
+}
+
+int main()
+{
+ volatile unsigned long b = (unsigned long)(UINT_MAX + 1) - 1;
+ assert (b == 18446744073709551615ul);
+
+ volatile unsigned long c = (unsigned long)(a - 4) + 1;
+ assert (c == 4294967296);
+
+ volatile unsigned long d = (unsigned long)(a + UINT_MAX - 4) + 2;
+ assert (d == 4294967296);
+
+ volatile unsigned long e = (unsigned long)(a - UINT_MAX) + UINT_MAX;
+ assert (e == 4294967299);
+
+ volatile unsigned long f = (unsigned long)(a + UINT_MAX) - UINT_MAX;
+ assert (f == 18446744069414584323ul);
+
+ volatile long g = (long)(a - 4) + 1;
+ assert (g == 4294967296);
+
+ volatile long h = (long)(aa + UINT_MAX) + 1;
+ assert (h == 3);
+
+ /* Zero-extend. */
+ volatile unsigned long i = (unsigned long)(bb + 4294967294u) + 5000000000;
+ assert (i == 9294967295);
+
+ /* Sign-extend. */
+ volatile unsigned long j = (unsigned long)(cc + 4294967294u) + 8000000000;
+ assert (j == 8000000002);
+
+ volatile unsigned long k = foo (-25);
+ assert (k == 9223372036854775792l);
+}
diff --git a/gcc/testsuite/gcc.dg/wrapped-binop-simplify-signed-1.c b/gcc/testsuite/gcc.dg/wrapped-binop-simplify-signed-1.c
new file mode 100644
index 00000000000..19b787b61b2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/wrapped-binop-simplify-signed-1.c
@@ -0,0 +1,60 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-ccp1-details" } */
+/* { dg-final { scan-tree-dump-times "gimple_simplified to" 11 "ccp1" } } */
+
+#include <limits.h>
+
+long foo(int a)
+{
+ return (long)(a - 2) + 1;
+}
+
+long bar(int a)
+{
+ return (long)(a + 3) - 1;
+}
+
+long baz(int a)
+{
+ return (long)(a - 1) + 2;
+}
+
+long baf(int a)
+{
+ return (long)(a + 1) - 2;
+}
+
+long bak(int a)
+{
+ return (long)(a + 1) + 3;
+}
+
+long bal(int a)
+{
+ return (long)(a - 7) - 4;
+}
+
+long bam(int a)
+{
+ return (long)(a - 1) - INT_MAX;
+}
+
+long bam2(int a)
+{
+ return (long)(a + 1) + INT_MAX;
+}
+
+long ban(int a)
+{
+ return (long)(a - 1) + INT_MIN;
+}
+
+long ban2(int a)
+{
+ return (long)(a + 1) - INT_MIN;
+}
+
+unsigned long baq(int a)
+{
+ return (unsigned long)(a + 1) - 1;
+}
diff --git a/gcc/testsuite/gcc.dg/wrapped-binop-simplify-unsigned-1.c b/gcc/testsuite/gcc.dg/wrapped-binop-simplify-unsigned-1.c
new file mode 100644
index 00000000000..71ab0807d7e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/wrapped-binop-simplify-unsigned-1.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-ccp1-details -fdump-tree-evrp-details -fdump-tree-vrp1-details" } */
+/* { dg-final { scan-tree-dump-times "gimple_simplified to" 1 "ccp1" } } */
+/* { dg-final { scan-tree-dump-times "gimple_simplified to" 2 "evrp" } } */
+/* { dg-final { scan-tree-dump-times "gimple_simplified to" 2 "vrp1" } } */
+
+#include <limits.h>
+
+unsigned long foo(unsigned int a)
+{
+ if (a > 3 && a < INT_MAX - 100)
+ return (unsigned long)(a - 1) + 1;
+}
+
+unsigned long bar(unsigned int a)
+{
+ if (a > 3 && a < INT_MAX - 100)
+ return (unsigned long)(a + 1) + ULONG_MAX;
+}
+
+unsigned long baz(unsigned int a)
+{
+ if (a > 3 && a < INT_MAX - 100)
+ return (unsigned long)(a + 1) - 5;
+}
+
+long baf(unsigned int a)
+{
+ if (a > 3 && a < INT_MAX - 100)
+ return (long)(a - 1) + 1;
+}
+
+unsigned long baq(int a)
+{
+ return (unsigned long)(a - 2) + 1;
+}
--
2.17.0
More information about the Gcc-patches
mailing list