Commit 0fe81a0f by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/63247 (fortran array alignment in omp target map)

	PR middle-end/63247
	* omp-low.c (lower_omp_target): For OMP_CLAUSE_MAP_POINTER
	of ARRAY_TYPE, if not OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION
	use the alignment of avar rather than ovar.

From-SVN: r215678
parent 32a5d2f1
2014-09-29 Jakub Jelinek <jakub@redhat.com>
PR middle-end/63247
* omp-low.c (lower_omp_target): For OMP_CLAUSE_MAP_POINTER
of ARRAY_TYPE, if not OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION
use the alignment of avar rather than ovar.
2014-09-28 John David Anglin <danglin@gcc.gnu.org> 2014-09-28 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.c (pa_output_function_epilogue): Only update * config/pa/pa.c (pa_output_function_epilogue): Only update
...@@ -10117,6 +10117,9 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) ...@@ -10117,6 +10117,9 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
continue; continue;
} }
unsigned int talign = TYPE_ALIGN_UNIT (TREE_TYPE (ovar));
if (DECL_P (ovar) && DECL_ALIGN_UNIT (ovar) > talign)
talign = DECL_ALIGN_UNIT (ovar);
if (nc) if (nc)
{ {
tree var = lookup_decl_in_outer_ctx (ovar, ctx); tree var = lookup_decl_in_outer_ctx (ovar, ctx);
...@@ -10131,6 +10134,7 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) ...@@ -10131,6 +10134,7 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
= create_tmp_var (TREE_TYPE (TREE_TYPE (x)), NULL); = create_tmp_var (TREE_TYPE (TREE_TYPE (x)), NULL);
mark_addressable (avar); mark_addressable (avar);
gimplify_assign (avar, build_fold_addr_expr (var), &ilist); gimplify_assign (avar, build_fold_addr_expr (var), &ilist);
talign = DECL_ALIGN_UNIT (avar);
avar = build_fold_addr_expr (avar); avar = build_fold_addr_expr (avar);
gimplify_assign (x, avar, &ilist); gimplify_assign (x, avar, &ilist);
} }
...@@ -10183,9 +10187,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) ...@@ -10183,9 +10187,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
unsigned int talign = TYPE_ALIGN_UNIT (TREE_TYPE (ovar));
if (DECL_P (ovar) && DECL_ALIGN_UNIT (ovar) > talign)
talign = DECL_ALIGN_UNIT (ovar);
talign = ceil_log2 (talign); talign = ceil_log2 (talign);
tkind |= talign << 3; tkind |= talign << 3;
CONSTRUCTOR_APPEND_ELT (vkind, purpose, CONSTRUCTOR_APPEND_ELT (vkind, purpose,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment