[Openmp-commits] [PATCH] D89844: [Clang][OpenMP] Fixed an issue of segment fault when using target nowait

Shilei Tian via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Mon Oct 26 11:54:55 PDT 2020


tianshilei1992 updated this revision to Diff 300754.
tianshilei1992 added a comment.
Herald added a project: OpenMP.
Herald added a subscriber: openmp-commits.

Added a test case


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89844/new/

https://reviews.llvm.org/D89844

Files:
  clang/lib/CodeGen/CGOpenMPRuntime.cpp
  openmp/libomptarget/test/offloading/bug47654.cpp


Index: openmp/libomptarget/test/offloading/bug47654.cpp
===================================================================
--- /dev/null
+++ openmp/libomptarget/test/offloading/bug47654.cpp
@@ -0,0 +1,29 @@
+// RUN: %libomptarget-compilexx-run-and-check-aarch64-unknown-linux-gnu
+// RUN: %libomptarget-compilexx-run-and-check-powerpc64-ibm-linux-gnu
+// RUN: %libomptarget-compilexx-run-and-check-powerpc64le-ibm-linux-gnu
+// RUN: %libomptarget-compilexx-run-and-check-x86_64-pc-linux-gnu
+// RUN: %libomptarget-compilexx-run-and-check-nvptx64-nvidia-cuda
+
+#include <cassert>
+#include <iostream>
+
+int main(int argc, char *argv[]) {
+  int i = 0, j = 0;
+
+#pragma omp target map(tofrom : i, j) nowait
+  {
+    i = 1;
+    j = 2;
+  }
+
+#pragma omp taskwait
+
+  assert(i == 1);
+  assert(j == 2);
+
+  std::cout << "PASS\n";
+
+  return 0;
+}
+
+// CHECK: PASS
Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp
===================================================================
--- clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -9664,11 +9664,10 @@
     TargetDataInfo Info;
     // Fill up the arrays and create the arguments.
     emitOffloadingArrays(CGF, CombinedInfo, Info);
-    bool HasDependClauses = D.hasClausesOfKind<OMPDependClause>();
     emitOffloadingArraysArgument(CGF, Info.BasePointersArray,
                                  Info.PointersArray, Info.SizesArray,
                                  Info.MapTypesArray, Info.MappersArray, Info,
-                                 {/*ForEndTask=*/false, HasDependClauses});
+                                 {/*ForEndTask=*/false, RequiresOuterTask});
     InputInfo.NumberOfTargetItems = Info.NumberOfPtrs;
     InputInfo.BasePointersArray =
         Address(Info.BasePointersArray, CGM.getPointerAlign());


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89844.300754.patch
Type: text/x-patch
Size: 1815 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20201026/02685aff/attachment.bin>


More information about the Openmp-commits mailing list