aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.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/gimple.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/gimple.c')
-rw-r--r--gcc/gimple.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index e3095d7..af23c6a 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -3160,7 +3160,9 @@ canonicalize_cond_expr_cond (tree t)
{
/* Strip conversions around boolean operations. */
if (CONVERT_EXPR_P (t)
- && truth_value_p (TREE_CODE (TREE_OPERAND (t, 0))))
+ && (truth_value_p (TREE_CODE (TREE_OPERAND (t, 0)))
+ || TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0)))
+ == BOOLEAN_TYPE))
t = TREE_OPERAND (t, 0);
/* For !x use x == 0. */