aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-07-06 23:56:46 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-07-06 23:56:46 +0200
commit94e14f2e90e3c13894f3b1df39cd1f28f1081d3b (patch)
treef02a2b76e65f271b7cb2dc3198609560f5db04e9 /gcc
parenta10b664eb7a5b8de4e84c6a87e5e462da8c69133 (diff)
downloadgcc-94e14f2e90e3c13894f3b1df39cd1f28f1081d3b.zip
gcc-94e14f2e90e3c13894f3b1df39cd1f28f1081d3b.tar.gz
gcc-94e14f2e90e3c13894f3b1df39cd1f28f1081d3b.tar.bz2
omp-low.c (struct omp_context): Rename combined_into_simd_safelen0 member to combined_into_simd_safelen1.
* omp-low.c (struct omp_context): Rename combined_into_simd_safelen0 member to combined_into_simd_safelen1. (lower_rec_input_clauses, lower_omp_1): Adjust uses. (lower_lastprivate_clauses): Likewise. For conditional lastprivate clauses if ctx->combined_into_simd_safelen1 put statements after the predicate conditionalized block rather than into it. From-SVN: r273168
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/omp-low.c16
2 files changed, 21 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3694a77..ae3fbe4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2019-07-06 Jakub Jelinek <jakub@redhat.com>
+
+ * omp-low.c (struct omp_context): Rename combined_into_simd_safelen0
+ member to combined_into_simd_safelen1.
+ (lower_rec_input_clauses, lower_omp_1): Adjust uses.
+ (lower_lastprivate_clauses): Likewise. For conditional lastprivate
+ clauses if ctx->combined_into_simd_safelen1 put statements after the
+ predicate conditionalized block rather than into it.
+
2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
* config/s390/s390.md (*negabs<FP:mode>2_nocc): Use FP for
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 5d5fb6a..b687fe1 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -140,7 +140,7 @@ struct omp_context
/* True if lower_omp_1 should look up lastprivate conditional in parent
context. */
- bool combined_into_simd_safelen0;
+ bool combined_into_simd_safelen1;
/* True if there is nested scan context with inclusive clause. */
bool scan_inclusive;
@@ -5703,7 +5703,7 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
if (gimple_omp_for_combined_into_p (ctx->stmt))
{
/* Signal to lower_omp_1 that it should use parent context. */
- ctx->combined_into_simd_safelen0 = true;
+ ctx->combined_into_simd_safelen1 = true;
for (c = clauses; c ; c = OMP_CLAUSE_CHAIN (c))
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
&& OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c))
@@ -6018,6 +6018,7 @@ lower_lastprivate_clauses (tree clauses, tree predicate, gimple_seq *body_p,
bool par_clauses = false;
tree simduid = NULL, lastlane = NULL, simtcond = NULL, simtlast = NULL;
unsigned HOST_WIDE_INT conditional_off = 0;
+ gimple_seq post_stmt_list = NULL;
/* Early exit if there are no lastprivate or linear clauses. */
for (; clauses ; clauses = OMP_CLAUSE_CHAIN (clauses))
@@ -6107,7 +6108,7 @@ lower_lastprivate_clauses (tree clauses, tree predicate, gimple_seq *body_p,
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
&& OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c)
&& ctx->lastprivate_conditional_map
- && !ctx->combined_into_simd_safelen0)
+ && !ctx->combined_into_simd_safelen1)
{
gcc_assert (body_p);
if (simduid)
@@ -6144,6 +6145,12 @@ lower_lastprivate_clauses (tree clauses, tree predicate, gimple_seq *body_p,
gimple_seq_add_stmt (this_stmt_list, gimple_build_label (lab1));
gimplify_assign (mem2, v, this_stmt_list);
}
+ else if (predicate
+ && ctx->combined_into_simd_safelen1
+ && OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
+ && OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c)
+ && ctx->lastprivate_conditional_map)
+ this_stmt_list = &post_stmt_list;
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
|| (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
@@ -6274,6 +6281,7 @@ lower_lastprivate_clauses (tree clauses, tree predicate, gimple_seq *body_p,
if (label)
gimple_seq_add_stmt (stmt_list, gimple_build_label (label));
+ gimple_seq_add_seq (stmt_list, post_stmt_list);
}
/* Lower the OpenACC reductions of CLAUSES for compute axis LEVEL
@@ -12412,7 +12420,7 @@ lower_omp_1 (gimple_stmt_iterator *gsi_p, omp_context *ctx)
if (tree *v = up->lastprivate_conditional_map->get (lhs))
{
tree clauses;
- if (up->combined_into_simd_safelen0)
+ if (up->combined_into_simd_safelen1)
up = up->outer;
if (gimple_code (up->stmt) == GIMPLE_OMP_FOR)
clauses = gimple_omp_for_clauses (up->stmt);