aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-forwprop.c
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2011-08-02 16:55:47 +0200
committerKai Tietz <ktietz@gcc.gnu.org>2011-08-02 16:55:47 +0200
commit9b80d091af4760e4c8869917790bd01465b7a59e (patch)
tree9ab01933186298e3c020529082506e008ea0077a /gcc/tree-ssa-forwprop.c
parent7b9db92637e1e8229f3ab026d4b9c5ef3072b7a5 (diff)
downloadgcc-9b80d091af4760e4c8869917790bd01465b7a59e.zip
gcc-9b80d091af4760e4c8869917790bd01465b7a59e.tar.gz
gcc-9b80d091af4760e4c8869917790bd01465b7a59e.tar.bz2
gimple.c (canonicalize_cond_expr_cond): Handle cast from boolean-type.
* gimple.c (canonicalize_cond_expr_cond): Handle cast from boolean-type. (ssa_forward_propagate_and_combine): Interprete result of forward_propagate_comparison. * gcc/gimple-fold.c (fold_gimple_assign): Add canonicalization for boolean-typed operands for comparisons. * gcc.dg/tree-ssa/forwprop-15.c: New testcase. From-SVN: r177170
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r--gcc/tree-ssa-forwprop.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 7cf420f..2a56b79 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -468,7 +468,9 @@ forward_propagate_into_comparison (gimple_stmt_iterator *gsi)
if (tmp)
{
gimple_assign_set_rhs_from_tree (gsi, tmp);
+ fold_stmt_inplace (stmt);
update_stmt (stmt);
+
if (TREE_CODE (rhs1) == SSA_NAME)
cfg_changed |= remove_prop_source_from_use (rhs1);
if (TREE_CODE (rhs2) == SSA_NAME)
@@ -2407,7 +2409,8 @@ ssa_forward_propagate_and_combine (void)
}
else if (TREE_CODE_CLASS (code) == tcc_comparison)
{
- forward_propagate_comparison (stmt);
+ if (forward_propagate_comparison (stmt))
+ cfg_changed = true;
gsi_next (&gsi);
}
else