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