From 0d6fc5032c7ba8a95301d0ccbc418875e73955ac Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Wed, 19 Oct 2022 17:31:14 +0200 Subject: [PATCH] Fix omp-expand.cc's expand_omp_target for OpenACC In OG12 commit a6c1eccffb161130351d891dc87f5afe54f8075c, "Fortran/OpenMP: Support mapping of DT with allocatable components" the size of the addr/sizes/kind arrays was passed as 4th argument. However, OpenACC uses >3 arguments for its own purpose, e.g. to handle noncontiguous arrays by passing an array descriptor there. This patch restores the previous behaviour for OpenACC, fixing testcases like libgomp.oacc-c-c++-common/noncontig_array-1.c. gcc/ * omp-expand.cc (expand_omp_target): Fix OpenACC in case there are more than 3 arguments to the builtin function. --- gcc/ChangeLog.omp | 5 +++++ gcc/omp-expand.cc | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 527a9850dba8..32a8c7b485fb 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,8 @@ +2022-10-19 Tobias Burnus + + * omp-expand.cc (expand_omp_target): Fix OpenACC in case there + are more than 3 arguments to the builtin function. + 2022-10-17 Thomas Schwinge Backported from master: diff --git a/gcc/omp-expand.cc b/gcc/omp-expand.cc index 92996685d418..6529f63362b9 100644 --- a/gcc/omp-expand.cc +++ b/gcc/omp-expand.cc @@ -10456,7 +10456,7 @@ expand_omp_target (struct omp_region *region) t3 = t2; t4 = t2; } - else if (TREE_VEC_LENGTH (t) == 3) + else if (TREE_VEC_LENGTH (t) == 3 || is_gimple_omp_oacc (entry_stmt)) { t1 = TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (TREE_VEC_ELT (t, 1)))); t1 = size_binop (PLUS_EXPR, t1, size_int (1)); -- 2.47.2