diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/omp-low.c | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 738144d..de98034 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2011-07-29 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/49897 + PR middle-end/49898 + * omp-low.c (use_pointer_for_field): If disallowing copy-in/out + in nested parallel and outer is a gimple_reg, mark it as addressable + and set its bit in task_shared_vars bitmap too. + 2011-07-29 Uros Bizjak <ubizjak@gmail.com> * config/i386/predicates.md (tp_or_register_operand): Remove predicate. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index ccd248c..0376d92 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -781,7 +781,7 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx) break; if (c) - return true; + goto maybe_mark_addressable_and_ret; } } @@ -791,7 +791,9 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx) returns, the task hasn't necessarily terminated. */ if (!TREE_READONLY (decl) && is_task_ctx (shared_ctx)) { - tree outer = maybe_lookup_decl_in_outer_ctx (decl, shared_ctx); + tree outer; + maybe_mark_addressable_and_ret: + outer = maybe_lookup_decl_in_outer_ctx (decl, shared_ctx); if (is_gimple_reg (outer)) { /* Taking address of OUTER in lower_send_shared_vars |