summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-03 23:06:55 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-03 23:06:55 +0000
commit87b3137583b2e3d77f8384334bc196289e7ae51e (patch)
tree29377c3f249eb97a42a6b0e5ab3ed8a3948909b0 /gcc
parent2cf28cedf702cca4cc954ffb24c0144575b59ebe (diff)
downloadppe42-gcc-87b3137583b2e3d77f8384334bc196289e7ae51e.tar.gz
ppe42-gcc-87b3137583b2e3d77f8384334bc196289e7ae51e.zip
* omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
with !ctx->is_nested. (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts even if !ctx->is_nested. (lower_copyprivate_clauses, lower_send_clauses, lower_send_shared_vars): Call lookup_decl_in_outer_ctx unconditionally. * testsuite/libgomp.c/private-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130590 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/omp-low.c21
2 files changed, 15 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4e16b73f7b0..3994e5421c6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2007-12-03 Jakub Jelinek <jakub@redhat.com>
+ * omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
+ with !ctx->is_nested.
+ (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
+ even if !ctx->is_nested.
+ (lower_copyprivate_clauses, lower_send_clauses,
+ lower_send_shared_vars): Call lookup_decl_in_outer_ctx
+ unconditionally.
+
PR middle-end/29749
* fold-const.c (fold_binary) <case BIT_AND_EXPR>: Optimize
(X << C1) & C2 into (X << C1) & (C2 | ((1 << C1) - 1))
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 20f36e047b1..420e7553f51 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -1518,12 +1518,10 @@ lookup_decl_in_outer_ctx (tree decl, omp_context *ctx)
tree t;
omp_context *up;
- gcc_assert (ctx->is_nested);
-
for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
t = maybe_lookup_decl (decl, up);
- gcc_assert (t || is_global_var (decl));
+ gcc_assert (!ctx->is_nested || t || is_global_var (decl));
return t ? t : decl;
}
@@ -1538,9 +1536,8 @@ maybe_lookup_decl_in_outer_ctx (tree decl, omp_context *ctx)
tree t = NULL;
omp_context *up;
- if (ctx->is_nested)
- for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
- t = maybe_lookup_decl (decl, up);
+ for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
+ t = maybe_lookup_decl (decl, up);
return t ? t : decl;
}
@@ -2012,7 +2009,7 @@ lower_copyprivate_clauses (tree clauses, tree *slist, tree *rlist,
by_ref = use_pointer_for_field (var, false);
ref = build_sender_ref (var, ctx);
- x = (ctx->is_nested) ? lookup_decl_in_outer_ctx (var, ctx) : var;
+ x = lookup_decl_in_outer_ctx (var, ctx);
x = by_ref ? build_fold_addr_expr (x) : x;
x = build_gimple_modify_stmt (ref, x);
gimplify_and_add (x, slist);
@@ -2053,9 +2050,8 @@ lower_send_clauses (tree clauses, tree *ilist, tree *olist, omp_context *ctx)
continue;
}
- var = val = OMP_CLAUSE_DECL (c);
- if (ctx->is_nested)
- var = lookup_decl_in_outer_ctx (val, ctx);
+ val = OMP_CLAUSE_DECL (c);
+ var = lookup_decl_in_outer_ctx (val, ctx);
if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_COPYIN
&& is_global_var (var))
@@ -2127,13 +2123,10 @@ lower_send_shared_vars (tree *ilist, tree *olist, omp_context *ctx)
if (!nvar || !DECL_HAS_VALUE_EXPR_P (nvar))
continue;
- var = ovar;
-
/* If CTX is a nested parallel directive. Find the immediately
enclosing parallel or workshare construct that contains a
mapping for OVAR. */
- if (ctx->is_nested)
- var = lookup_decl_in_outer_ctx (ovar, ctx);
+ var = lookup_decl_in_outer_ctx (ovar, ctx);
if (use_pointer_for_field (ovar, true))
{
OpenPOWER on IntegriCloud