diff mbox

Try harder for conditional evaluation in VRP

Message ID alpine.LSU.2.11.1405271648350.2632@zhemvz.fhfr.qr
State New
Headers show

Commit Message

Richard Biener May 27, 2014, 2:49 p.m. UTC
On Tue, 27 May 2014, Richard Biener wrote:

> On Tue, 27 May 2014, Steven Bosscher wrote:
> 
> > On Tue, May 27, 2014 at 12:27 PM, Richard Biener wrote:
> > >         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
> > >         Try using literal operands when comparing value-ranges failed.
> > 
> > No test case?
> 
> Sorry ;)  Happens to patches I uncover in my dev tree.  I'll try
> to come up with sth (I remember coding it when workin on some
> PR ... but I've lost track of which one).

Here is one (yeah, a bit artificial ...).

Committed.

Richard.

2014-05-27  Richard Biener  <rguenther@suse.de>

	* gcc.dg/tree-ssa/vrp92.c: New testcase.
diff mbox

Patch

Index: gcc/testsuite/gcc.dg/tree-ssa/vrp92.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/vrp92.c	(revision 0)
+++ gcc/testsuite/gcc.dg/tree-ssa/vrp92.c	(working copy)
@@ -0,0 +1,23 @@ 
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
+
+void bar (void);
+int foo (int i, int j)
+{
+  int res = 1;
+  if (i < j)
+    {
+      /* We should be able to simplify the following conditional
+         during propagation.  */
+      if (i > j)
+	res = 0;
+    }
+  /* And compute res as having a value-range of [1,1].  */
+  if (res)
+    return i;
+  return j;
+}
+
+/* { dg-final { scan-tree-dump "res_.: \\\[1, 1\\\]" "vrp1" } } */
+/* { dg-final { scan-tree-dump-not "Threaded" "vrp1" } } */
+/* { dg-final { cleanup-tree-dump "vrp1" } } */