aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-forwprop.c
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2010-11-07 18:49:11 +0100
committerUros Bizjak <uros@gcc.gnu.org>2010-11-07 18:49:11 +0100
commitbb3684703d50c0d84978135438eba3fb8780b2ac (patch)
tree33733443aa4b3ecc17c13c832d47c84ba35650a6 /gcc/tree-ssa-forwprop.c
parent604e92e2f18660939dbd248d13e927307313c362 (diff)
downloadgcc-bb3684703d50c0d84978135438eba3fb8780b2ac.zip
gcc-bb3684703d50c0d84978135438eba3fb8780b2ac.tar.gz
gcc-bb3684703d50c0d84978135438eba3fb8780b2ac.tar.bz2
re PR tree-optimization/46346 (fma testsuite failures)
PR tree-optimization/46346 * tree-ssa-forwprop.c (rhs_to_tree): Handle GIMPLE_TERNARY_RHS. From-SVN: r166419
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r--gcc/tree-ssa-forwprop.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index a828408..7e7e2b1 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -341,7 +341,11 @@ rhs_to_tree (tree type, gimple stmt)
{
location_t loc = gimple_location (stmt);
enum tree_code code = gimple_assign_rhs_code (stmt);
- if (get_gimple_rhs_class (code) == GIMPLE_BINARY_RHS)
+ if (get_gimple_rhs_class (code) == GIMPLE_TERNARY_RHS)
+ return fold_build3_loc (loc, code, type, gimple_assign_rhs1 (stmt),
+ gimple_assign_rhs2 (stmt),
+ gimple_assign_rhs3 (stmt));
+ else if (get_gimple_rhs_class (code) == GIMPLE_BINARY_RHS)
return fold_build2_loc (loc, code, type, gimple_assign_rhs1 (stmt),
gimple_assign_rhs2 (stmt));
else if (get_gimple_rhs_class (code) == GIMPLE_UNARY_RHS)