aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@gcc.gnu.org>2006-09-22 10:02:47 +0000
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-09-22 10:02:47 +0000
commit36b241938732dfdb21df0b707805420df4d88d1a (patch)
treea53cb50ab23e9f4afc3a543ca0bdbc9e862012bd /gcc/tree-cfg.c
parent3735874658495316376a6d215904c62535e2979c (diff)
downloadgcc-36b241938732dfdb21df0b707805420df4d88d1a.zip
gcc-36b241938732dfdb21df0b707805420df4d88d1a.tar.gz
gcc-36b241938732dfdb21df0b707805420df4d88d1a.tar.bz2
re PR tree-optimization/28888 (ICE in tree check: expected cond_expr, have label_expr in simplify_using_initial_conditions, at tree-ssa-loop-niter.c)
PR tree-optimization/28888 * tree-if-conv.c (combine_blocks): Rewritten. * tree-cfg.c (tree_verify_flow_info): Check that edges with EDGE_TRUE/FALSE_VALUE follow COND_EXPR. * gcc.dg/pr28888.c: New test. From-SVN: r117135
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 52e71a7..67d0491 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -3757,6 +3757,19 @@ tree_verify_flow_info (void)
}
}
+ if (TREE_CODE (stmt) != COND_EXPR)
+ {
+ /* Verify that there are no edges with EDGE_TRUE/FALSE_FLAG set
+ after anything else but if statement. */
+ FOR_EACH_EDGE (e, ei, bb->succs)
+ if (e->flags & (EDGE_TRUE_VALUE | EDGE_FALSE_VALUE))
+ {
+ error ("true/false edge after a non-COND_EXPR in bb %d",
+ bb->index);
+ err = 1;
+ }
+ }
+
switch (TREE_CODE (stmt))
{
case COND_EXPR: