PR tree-optimization/21563
* tree-vrp.c (compare_value): Return boolean_false_node when
SSA_NAME in "if (SSA_NAME == CST)" is strictly smaller than or
strictly larger than CST.
testsuite/
PR tree-optimization/21563
* gcc.dg/tree-ssa/pr21563.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99705
138bc75d-0d04-0410-961f-
82ee72b054a4
* tree-optimize.c (init_tree_optimization_passes): Move
pass_cd_dce in place of the last pass_dce.
+ PR tree-optimization/21563
+ * tree-vrp.c (compare_value): Return boolean_false_node when
+ SSA_NAME in "if (SSA_NAME == CST)" is strictly smaller than or
+ strictly larger than CST.
+
2005-05-14 Nathan Sidwell <nathan@codesourcery.com>
Jan-Benedict Glaw <jbglaw@lug-owl.de>
+2005-05-14 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR tree-optimization/21563
+ * gcc.dg/tree-ssa/pr21563.c: New.
+
2005-05-14 Jan Hubicka <jh@suse.cz>
* gcc.dg/noreturn-7.c: Allow control reaches warning.
--- /dev/null
+/* PR tree-optimization/21563
+ Make sure VRP folds the second "if" statement. */
+
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp-details" } */
+
+int
+foo (int a)
+{
+ if (a > 1)
+ if (a == 0)
+ return 1;
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp"} } */
+/* { dg-final { cleanup-tree-dump "vrp" } } */
else if (cmp == -1 || cmp == 1 || cmp == 2)
return boolean_false_node;
}
+ else if (compare_values (val, vr->min) == -1
+ || compare_values (vr->max, val) == -1)
+ return boolean_false_node;
return NULL_TREE;
}