[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