From: Trevor Saunders <tbsaunde+...@tbsaunde.org>

A demonstration we can do the same thing with a gimple test as -fno-tree-evrp 
but somewhat more precisely.

I tested this passes on x86_64-linux-gnu, ok?

Trev

gcc/testsuite/ChangeLog:

2016-10-31  Trevor Saunders  <tbsaunde+...@tbsaunde.org>

        * gcc.dg/tree-ssa/pr21458-3.c: New test.
---
 gcc/testsuite/gcc.dg/tree-ssa/pr21458-3.c | 40 +++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr21458-3.c

diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21458-3.c 
b/gcc/testsuite/gcc.dg/tree-ssa/pr21458-3.c
new file mode 100644
index 0000000..6433a7e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21458-3.c
@@ -0,0 +1,40 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fgimple -fdump-tree-vrp1" } */
+
+extern void g (void);
+extern void bar (int);
+
+int __GIMPLE(startwith("vrp1"))
+foo (int a)
+{
+    int i;
+
+      bb_2:
+      i_4 = 1;
+        goto bb_6;
+
+         bb_3:
+         if (i_1 != 0)
+               goto bb_4;
+           else
+                 goto bb_5;
+
+             bb_4:
+             g ();
+
+               bb_5:
+               i_7 = i_1 + 1;
+
+                 bb_6:
+                 i_1 = __PHI (bb_2: i_4, bb_5: i_7);
+                   if (i_1 <= 99)
+                         goto bb_3;
+                     else
+                           goto bb_7;
+
+                       bb_7:
+                       return;
+
+}
+
+/* { dg-final { scan-tree-dump-times "Folding predicate.*to 1" 1 "vrp1" } } */
-- 
2.9.3.dirty

Reply via email to