]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix omp-expand.cc's expand_omp_target for OpenACC
authorTobias Burnus <tobias@codesourcery.com>
Wed, 19 Oct 2022 15:31:14 +0000 (17:31 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Wed, 19 Oct 2022 15:31:14 +0000 (17:31 +0200)
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
gcc/omp-expand.cc

index 527a9850dba8b753c6b6e09fd18dc4b749900dfc..32a8c7b485fb60495301715f9d5ac650e85682bd 100644 (file)
@@ -1,3 +1,8 @@
+2022-10-19  Tobias Burnus  <tobias@codesourcery.com>
+
+       * 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  <thomas@codesourcery.com>
 
        Backported from master:
index 92996685d418df4997f8d87fe7c732d768d4f85a..6529f63362b965c7e6fb73401bd921ee01a1f951 100644 (file)
@@ -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));