aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-parloops.c
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-06-29 13:53:32 +0000
committerTom de Vries <tom@codesourcery.com>2015-06-29 13:53:32 +0000
commit71b38571b8abb96fab7ba11cff4ef58a397284c2 (patch)
treeb6e774aa0b69528905941fdd8e69df6a5282b599 /gcc/tree-parloops.c
parenta24a7c48184b5a6df80d17490401aca3eba38b9d (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.c59
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)