diff options
Diffstat (limited to 'gcc-4.4.0/gcc/tree-ssa-sccvn.c')
-rw-r--r-- | gcc-4.4.0/gcc/tree-ssa-sccvn.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc-4.4.0/gcc/tree-ssa-sccvn.c b/gcc-4.4.0/gcc/tree-ssa-sccvn.c index 1b01cffdc..aa70b94d5 100644 --- a/gcc-4.4.0/gcc/tree-ssa-sccvn.c +++ b/gcc-4.4.0/gcc/tree-ssa-sccvn.c @@ -659,6 +659,8 @@ copy_reference_ops_from_ref (tree ref, VEC(vn_reference_op_s, heap) **result) case CONST_DECL: case RESULT_DECL: case SSA_NAME: + case EXC_PTR_EXPR: + case FILTER_EXPR: temp.op0 = ref; break; case ADDR_EXPR: @@ -751,6 +753,8 @@ get_ref_from_reference_ops (VEC(vn_reference_op_s, heap) *ops) case CONST_DECL: case RESULT_DECL: case SSA_NAME: + case FILTER_EXPR: + case EXC_PTR_EXPR: *op0_p = op->op0; break; @@ -1293,7 +1297,7 @@ vn_nary_op_lookup_stmt (gimple stmt, vn_nary_op_t *vnresult) *vnresult = NULL; vno1.opcode = gimple_assign_rhs_code (stmt); vno1.length = gimple_num_ops (stmt) - 1; - vno1.type = TREE_TYPE (gimple_assign_lhs (stmt)); + vno1.type = gimple_expr_type (stmt); for (i = 0; i < vno1.length; ++i) vno1.op[i] = gimple_op (stmt, i + 1); if (vno1.opcode == REALPART_EXPR @@ -1401,7 +1405,7 @@ vn_nary_op_insert_stmt (gimple stmt, tree result) vno1->value_id = VN_INFO (result)->value_id; vno1->opcode = gimple_assign_rhs_code (stmt); vno1->length = length; - vno1->type = TREE_TYPE (gimple_assign_lhs (stmt)); + vno1->type = gimple_expr_type (stmt); for (i = 0; i < vno1->length; ++i) vno1->op[i] = gimple_op (stmt, i + 1); if (vno1->opcode == REALPART_EXPR @@ -2142,7 +2146,7 @@ simplify_binary_expression (gimple stmt) fold_defer_overflow_warnings (); result = fold_binary (gimple_assign_rhs_code (stmt), - TREE_TYPE (gimple_get_lhs (stmt)), op0, op1); + gimple_expr_type (stmt), op0, op1); if (result) STRIP_USELESS_TYPE_CONVERSION (result); |