diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-08 15:02:14 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-08 15:02:14 +0000 |
commit | 48fc5f4f3ba68b9b15116d34a707e0a2c5130fb4 (patch) | |
tree | d9a810e5b0358753a2e2893459e0d52f997070ed /gcc/tree-if-conv.c | |
parent | b14e2757acd28c7edeeaf2bf64d061563ab11606 (diff) | |
download | gcc-48fc5f4f3ba68b9b15116d34a707e0a2c5130fb4.tar.gz |
* tree-if-conv.c (tree_if_convert_cond_expr): Remove two "if"
statements that always trigger.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90267 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-if-conv.c')
-rw-r--r-- | gcc/tree-if-conv.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 89592f0ce2a..371d0a6df2a 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -271,7 +271,7 @@ static void tree_if_convert_cond_expr (struct loop *loop, tree stmt, tree cond, block_stmt_iterator *bsi) { - tree then_clause, else_clause, c, new_cond; + tree then_clause, else_clause, c, c2, new_cond; new_cond = NULL_TREE; gcc_assert (TREE_CODE (stmt) == COND_EXPR); @@ -290,27 +290,23 @@ tree_if_convert_cond_expr (struct loop *loop, tree stmt, tree cond, } /* Add new condition into destination's predicate list. */ - if (then_clause) - /* if 'c' is true then then_clause is reached. */ - new_cond = add_to_dst_predicate_list (loop, then_clause, cond, - unshare_expr (c), bsi); - if (else_clause) - { - tree c2; - if (!is_gimple_reg(c) && is_gimple_condexpr (c)) - { - tree new_stmt; - new_stmt = ifc_temp_var (TREE_TYPE (c), unshare_expr (c)); - bsi_insert_before (bsi, new_stmt, BSI_SAME_STMT); - c = TREE_OPERAND (new_stmt, 0); - } + /* If 'c' is true then then_clause is reached. */ + new_cond = add_to_dst_predicate_list (loop, then_clause, cond, + unshare_expr (c), bsi); - /* if 'c' is false then else_clause is reached. */ - c2 = invert_truthvalue (unshare_expr (c)); - add_to_dst_predicate_list (loop, else_clause, cond, c2, bsi); + if (!is_gimple_reg(c) && is_gimple_condexpr (c)) + { + tree new_stmt; + new_stmt = ifc_temp_var (TREE_TYPE (c), unshare_expr (c)); + bsi_insert_before (bsi, new_stmt, BSI_SAME_STMT); + c = TREE_OPERAND (new_stmt, 0); } + /* If 'c' is false then else_clause is reached. */ + c2 = invert_truthvalue (unshare_expr (c)); + add_to_dst_predicate_list (loop, else_clause, cond, c2, bsi); + /* Now this conditional statement is redundant. Remove it. But, do not remove exit condition! Update exit condition using new condition. */ |