diff options
author | Richard Biener <rguenther@suse.de> | 2014-10-29 14:42:03 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-10-29 14:42:03 +0000 |
commit | d4573ffe1ed9d14c1be3ecd4f2f18f18ea374660 (patch) | |
tree | 885ad5c969671552fbdfb8b8988a7b208226e980 /gcc/tree-ssa-forwprop.c | |
parent | bc1b3a8840c2ab808b1085399a7b76e0c9f4103a (diff) | |
download | gcc-d4573ffe1ed9d14c1be3ecd4f2f18f18ea374660.zip gcc-d4573ffe1ed9d14c1be3ecd4f2f18f18ea374660.tar.gz gcc-d4573ffe1ed9d14c1be3ecd4f2f18f18ea374660.tar.bz2 |
match.pd: Implement a first set of conversion patterns.
2014-10-29 Richard Biener <rguenther@suse.de>
* match.pd: Implement a first set of conversion patterns.
* fold-const.c (fold_unary_loc): Remove them here.
* tree-ssa-forwprop.c (simplify_vce): Remove.
(pass_forwprop::execute): Do not call simplify_vce.
From-SVN: r216839
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r-- | gcc/tree-ssa-forwprop.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index 08ae6ef..a5283a2 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -3174,69 +3174,6 @@ combine_conversions (gimple_stmt_iterator *gsi) return 0; } -/* Combine VIEW_CONVERT_EXPRs with their defining statement. */ - -static bool -simplify_vce (gimple_stmt_iterator *gsi) -{ - gimple stmt = gsi_stmt (*gsi); - tree type = TREE_TYPE (gimple_assign_lhs (stmt)); - - /* Drop useless VIEW_CONVERT_EXPRs. */ - tree op = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0); - if (useless_type_conversion_p (type, TREE_TYPE (op))) - { - gimple_assign_set_rhs1 (stmt, op); - update_stmt (stmt); - return true; - } - - if (TREE_CODE (op) != SSA_NAME) - return false; - - gimple def_stmt = SSA_NAME_DEF_STMT (op); - if (!is_gimple_assign (def_stmt)) - return false; - - tree def_op = gimple_assign_rhs1 (def_stmt); - switch (gimple_assign_rhs_code (def_stmt)) - { - CASE_CONVERT: - /* Strip integral conversions that do not change the precision. */ - if ((INTEGRAL_TYPE_P (TREE_TYPE (op)) - || POINTER_TYPE_P (TREE_TYPE (op))) - && (INTEGRAL_TYPE_P (TREE_TYPE (def_op)) - || POINTER_TYPE_P (TREE_TYPE (def_op))) - && (TYPE_PRECISION (TREE_TYPE (op)) - == TYPE_PRECISION (TREE_TYPE (def_op)))) - { - TREE_OPERAND (gimple_assign_rhs1 (stmt), 0) = def_op; - update_stmt (stmt); - return true; - } - break; - - case VIEW_CONVERT_EXPR: - /* Series of VIEW_CONVERT_EXPRs on register operands can - be contracted. */ - if (TREE_CODE (TREE_OPERAND (def_op, 0)) == SSA_NAME) - { - if (useless_type_conversion_p (type, - TREE_TYPE (TREE_OPERAND (def_op, 0)))) - gimple_assign_set_rhs1 (stmt, TREE_OPERAND (def_op, 0)); - else - TREE_OPERAND (gimple_assign_rhs1 (stmt), 0) - = TREE_OPERAND (def_op, 0); - update_stmt (stmt); - return true; - } - - default:; - } - - return false; -} - /* Combine an element access with a shuffle. Returns true if there were any changes made, else it returns false. */ @@ -3912,8 +3849,6 @@ pass_forwprop::execute (function *fun) changed = did_something != 0; } - else if (code == VIEW_CONVERT_EXPR) - changed = simplify_vce (&gsi); else if (code == VEC_PERM_EXPR) { int did_something = simplify_permutation (&gsi); |