diff options
Diffstat (limited to 'gcc/tree-ssa-phiopt.c')
-rw-r--r-- | gcc/tree-ssa-phiopt.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index 300016f7a0b..973a3617fe1 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -1528,7 +1528,7 @@ cond_if_else_store_replacement_1 (basic_block then_bb, basic_block else_bb, basic_block join_bb, gimple then_assign, gimple else_assign) { - tree lhs_base, lhs, then_rhs, else_rhs, name; + tree lhs_base, lhs, else_lhs, then_rhs, else_rhs, name; source_location then_locus, else_locus; gimple_stmt_iterator gsi; gimple newphi, new_stmt; @@ -1544,8 +1544,10 @@ cond_if_else_store_replacement_1 (basic_block then_bb, basic_block else_bb, return false; lhs = gimple_assign_lhs (then_assign); + else_lhs = gimple_assign_lhs (else_assign); if (!is_gimple_reg_type (TREE_TYPE (lhs)) - || !operand_equal_p (lhs, gimple_assign_lhs (else_assign), 0)) + || !operand_equal_p (lhs, else_lhs, 0) + || !types_compatible_p (TREE_TYPE (lhs), TREE_TYPE (else_lhs))) return false; lhs_base = get_base_address (lhs); |