Index: tree-ssa-dom.c =================================================================== --- tree-ssa-dom.c (revision 123623) +++ tree-ssa-dom.c (working copy) @@ -1683,14 +1683,11 @@ cprop_operand (tree stmt, use_operand_p converting the constant to the proper type. Note that convert may return a non-gimple expression, in which case we ignore this propagation opportunity. */ - if (TREE_CODE (val) != SSA_NAME) + if (TREE_CODE (val) != SSA_NAME && op_type != val_type) { - if (!lang_hooks.types_compatible_p (op_type, val_type)) - { - val = fold_convert (TREE_TYPE (op), val); - if (!is_gimple_min_invariant (val)) - return false; - } + val = fold_convert (TREE_TYPE (op), val); + if (!is_gimple_min_invariant (val)) + return false; } /* Certain operands are not allowed to be copy propagated due Index: tree-ssa-phiopt.c =================================================================== --- tree-ssa-phiopt.c (revision 123623) +++ tree-ssa-phiopt.c (working copy) @@ -419,8 +419,7 @@ conditional_replacement (basic_block con /* If the condition was a naked SSA_NAME and the type is not the same as the type of the result, then convert the type of the condition. */ - if (!lang_hooks.types_compatible_p (TREE_TYPE (cond), TREE_TYPE (result))) - cond = fold_convert (TREE_TYPE (result), cond); + cond = fold_convert (TREE_TYPE (result), cond); /* We need to know which is the true edge and which is the false edge so that we know when to invert the condition below. */ Index: tree-vect-generic.c =================================================================== --- tree-vect-generic.c (revision 123623) +++ tree-vect-generic.c (working copy) @@ -461,10 +461,7 @@ expand_vector_operations_1 (block_stmt_i gcc_assert (code != VEC_LSHIFT_EXPR && code != VEC_RSHIFT_EXPR); rhs = expand_vector_operation (bsi, type, compute_type, rhs, code); - if (lang_hooks.types_compatible_p (TREE_TYPE (lhs), TREE_TYPE (rhs))) - *p_rhs = rhs; - else - *p_rhs = gimplify_build1 (bsi, VIEW_CONVERT_EXPR, TREE_TYPE (lhs), rhs); + *p_rhs = fold_convert (TREE_TYPE (lhs), rhs); mark_stmt_modified (bsi_stmt (*bsi)); }