diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-07-10 08:25:18 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-07-10 08:25:18 +0000 |
commit | 9f620bf1eaa3b4a0c0419d0245184b50d871dd3b (patch) | |
tree | 44f02740ee8ce53dcbdabefda2290ac7c2c32586 /gcc/tree-parloops.c | |
parent | 094fe02336be4ba0bf630ab056d34c0333ff0852 (diff) | |
download | gcc-9f620bf1eaa3b4a0c0419d0245184b50d871dd3b.zip gcc-9f620bf1eaa3b4a0c0419d0245184b50d871dd3b.tar.gz gcc-9f620bf1eaa3b4a0c0419d0245184b50d871dd3b.tar.bz2 |
Insert new bound in try_transform_to_exit_first_loop_alt
2015-07-10 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (try_transform_to_exit_first_loop_alt): If not found,
insert nit + 1 bound.
* testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95: New test.
* testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95: New test.
* gfortran.dg/parloops-exit-first-loop-alt-2.f95: New test.
* gfortran.dg/parloops-exit-first-loop-alt.f95: New test.
From-SVN: r225655
Diffstat (limited to 'gcc/tree-parloops.c')
-rw-r--r-- | gcc/tree-parloops.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 846077a..bda5d05 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -1828,8 +1828,18 @@ try_transform_to_exit_first_loop_alt (struct loop *loop, alt_bound = op1; } + /* If not found, insert nit + 1. */ if (alt_bound == NULL_TREE) - return false; + { + alt_bound = fold_build2 (PLUS_EXPR, nit_type, nit, + build_int_cst_type (nit_type, 1)); + + gimple_stmt_iterator gsi = gsi_last_bb (loop_preheader_edge (loop)->src); + + alt_bound + = force_gimple_operand_gsi (&gsi, alt_bound, true, NULL_TREE, false, + GSI_CONTINUE_LINKING); + } transform_to_exit_first_loop_alt (loop, reduction_list, alt_bound); return true; |