diff options
author | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-09-22 10:02:47 +0000 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-09-22 10:02:47 +0000 |
commit | 36b241938732dfdb21df0b707805420df4d88d1a (patch) | |
tree | a53cb50ab23e9f4afc3a543ca0bdbc9e862012bd /gcc/tree-cfg.c | |
parent | 3735874658495316376a6d215904c62535e2979c (diff) | |
download | gcc-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.c | 13 |
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: |