+2005-04-18 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR tree-optimization/21001
+ * tree-optimize.c (init_tree_optimization_passes): Move the
+ first pass_forwprop immediately before pass_vrp.
+
2005-04-17 Ian Lance Taylor <ian@airs.com>
* c-common.def (SIZEOF_EXPR, ARROW_EXPR, ALIGNOF_EXPR): Remove.
+2005-04-18 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR tree-optimization/21001
+ * gcc.dg/tree-ssa/pr21001.c: New.
+
2005-04-17 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/21075
--- /dev/null
+/* PR tree-optimization/21001
+ VRP did not insert ASSERT_EXPRs when the variable tested in a
+ COND_EXPR is a single-use variable. By propagating the definition
+ of the single-use variable into the COND_EXPR, we can get useful
+ range infomation out of the conditional. */
+
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp-details" } */
+
+int
+foo (int a)
+{
+ int b = a != 0;
+ if (b)
+ if (a != 0)
+ return 1;
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp"} } */
NEXT_PASS (pass_dominator);
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_dce);
+ NEXT_PASS (pass_forwprop);
NEXT_PASS (pass_vrp);
NEXT_PASS (pass_merge_phi);
- NEXT_PASS (pass_forwprop);
NEXT_PASS (pass_phiopt);
NEXT_PASS (pass_may_alias);
NEXT_PASS (pass_tail_recursion);