diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-06-29 13:53:32 +0000 |
---|---|---|
committer | Tom de Vries <tom@codesourcery.com> | 2015-06-29 13:53:32 +0000 |
commit | 71b38571b8abb96fab7ba11cff4ef58a397284c2 (patch) | |
tree | b6e774aa0b69528905941fdd8e69df6a5282b599 /gcc/tree-parloops.c | |
parent | a24a7c48184b5a6df80d17490401aca3eba38b9d (diff) |
Simplify structure try_transform_to_exit_first_loop_alt
2015-06-29 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (try_transform_to_exit_first_loop_alt): Simplify
function structure.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@225119 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-parloops.c')
-rw-r--r-- | gcc/tree-parloops.c | 59 |
1 files changed, 15 insertions, 44 deletions
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index ab77f32372a..ec708c67ac9 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -1788,60 +1788,31 @@ try_transform_to_exit_first_loop_alt (struct loop *loop, nit, build_one_cst (nit_type)); gcc_assert (TREE_CODE (alt_bound) == INTEGER_CST); + transform_to_exit_first_loop_alt (loop, reduction_list, alt_bound); + return true; } else { /* Todo: Figure out if we can trigger this, if it's worth to handle optimally, and if we can handle it optimally. */ + return false; } } - else - { - gcc_assert (TREE_CODE (nit) == SSA_NAME); - - gimple def = SSA_NAME_DEF_STMT (nit); - - if (def - && is_gimple_assign (def) - && gimple_assign_rhs_code (def) == PLUS_EXPR) - { - tree op1 = gimple_assign_rhs1 (def); - tree op2 = gimple_assign_rhs2 (def); - if (integer_minus_onep (op1)) - alt_bound = op2; - else if (integer_minus_onep (op2)) - alt_bound = op1; - } - /* There is a number of test-cases for which we don't get an alt_bound - here: they're listed here, with the lhs of the last stmt as the nit: + gcc_assert (TREE_CODE (nit) == SSA_NAME); - libgomp.graphite/force-parallel-1.c: - _21 = (signed long) N_6(D); - _19 = _21 + -1; - _7 = (unsigned long) _19; + gimple def = SSA_NAME_DEF_STMT (nit); - libgomp.graphite/force-parallel-2.c: - _33 = (signed long) N_9(D); - _16 = _33 + -1; - _37 = (unsigned long) _16; - - libgomp.graphite/force-parallel-5.c: - <bb 6>: - # graphite_IV.5_46 = PHI <0(5), graphite_IV.5_47(11)> - <bb 7>: - _33 = (unsigned long) graphite_IV.5_46; - - g++.dg/tree-ssa/pr34355.C: - _2 = (unsigned int) i_9; - _3 = 4 - _2; - - gcc.dg/pr53849.c: - _5 = d.0_11 + -2; - _18 = (unsigned int) _5; - - We will be able to handle some of these cases, if we can determine when - it's safe to look past casts. */ + if (def + && is_gimple_assign (def) + && gimple_assign_rhs_code (def) == PLUS_EXPR) + { + tree op1 = gimple_assign_rhs1 (def); + tree op2 = gimple_assign_rhs2 (def); + if (integer_minus_onep (op1)) + alt_bound = op2; + else if (integer_minus_onep (op2)) + alt_bound = op1; } if (alt_bound == NULL_TREE) |