diff options
Diffstat (limited to 'gcc/tree-ssa-threadedge.c')
-rw-r--r-- | gcc/tree-ssa-threadedge.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c index 0113d3ae8bd..9aca36ced62 100644 --- a/gcc/tree-ssa-threadedge.c +++ b/gcc/tree-ssa-threadedge.c @@ -242,14 +242,14 @@ fold_assignment_stmt (gimple stmt) return fold (rhs); } - break; + case GIMPLE_UNARY_RHS: { tree lhs = gimple_assign_lhs (stmt); tree op0 = gimple_assign_rhs1 (stmt); return fold_unary (subcode, TREE_TYPE (lhs), op0); } - break; + case GIMPLE_BINARY_RHS: { tree lhs = gimple_assign_lhs (stmt); @@ -257,7 +257,16 @@ fold_assignment_stmt (gimple stmt) tree op1 = gimple_assign_rhs2 (stmt); return fold_binary (subcode, TREE_TYPE (lhs), op0, op1); } - break; + + case GIMPLE_TERNARY_RHS: + { + tree lhs = gimple_assign_lhs (stmt); + tree op0 = gimple_assign_rhs1 (stmt); + tree op1 = gimple_assign_rhs2 (stmt); + tree op2 = gimple_assign_rhs3 (stmt); + return fold_ternary (subcode, TREE_TYPE (lhs), op0, op1, op2); + } + default: gcc_unreachable (); } |