[PATCH] D56430: Incorrect implicit data-sharing for nested tasks
Sergi Mateo via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 8 02:57:21 PST 2019
smateo updated this revision to Diff 180631.
smateo added a comment.
Adding more context
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56430/new/
https://reviews.llvm.org/D56430
Files:
lib/Sema/SemaOpenMP.cpp
test/OpenMP/task_messages.cpp
Index: test/OpenMP/task_messages.cpp
===================================================================
--- test/OpenMP/task_messages.cpp
+++ test/OpenMP/task_messages.cpp
@@ -8,7 +8,7 @@
#pragma omp task // expected-error {{unexpected OpenMP directive '#pragma omp task'}}
class S {
- S(const S &s) { a = s.a + 12; } // expected-note 14 {{implicitly declared private here}}
+ S(const S &s) { a = s.a + 12; } // expected-note 16 {{implicitly declared private here}}
int a;
public:
@@ -51,6 +51,15 @@
++a; // expected-error {{calling a private constructor of class 'S'}}
#pragma omp task default(shared)
#pragma omp task
+ // expected-error at +1 {{calling a private constructor of class 'S'}}
+ ++a;
+#pragma omp parallel shared(a)
+#pragma omp task
+#pragma omp task
+ ++a;
+#pragma omp parallel shared(a)
+#pragma omp task default(shared)
+#pragma omp task
++a;
#pragma omp task
#pragma omp parallel
@@ -205,6 +214,15 @@
++sa; // expected-error {{calling a private constructor of class 'S'}}
#pragma omp task default(shared)
#pragma omp task
+ // expected-error at +1 {{calling a private constructor of class 'S'}}
+ ++sa;
+#pragma omp parallel shared(sa)
+#pragma omp task
+#pragma omp task
+ ++sa;
+#pragma omp parallel shared(sa)
+#pragma omp task default(shared)
+#pragma omp task
++sa;
#pragma omp task
#pragma omp parallel
Index: lib/Sema/SemaOpenMP.cpp
===================================================================
--- lib/Sema/SemaOpenMP.cpp
+++ lib/Sema/SemaOpenMP.cpp
@@ -676,9 +676,13 @@
}
};
+
+bool isParallelRegion(OpenMPDirectiveKind DKind) {
+ return isOpenMPParallelDirective(DKind) || isOpenMPTeamsDirective(DKind);
+}
+
bool isParallelOrTaskRegion(OpenMPDirectiveKind DKind) {
- return isOpenMPParallelDirective(DKind) || isOpenMPTaskingDirective(DKind) ||
- isOpenMPTeamsDirective(DKind) || DKind == OMPD_unknown;
+ return isParallelRegion(DKind) || isOpenMPTaskingDirective(DKind) || DKind == OMPD_unknown;
}
} // namespace
@@ -819,7 +823,7 @@
DVar.CKind = OMPC_firstprivate;
return DVar;
}
- } while (I != E && !isParallelOrTaskRegion(I->Directive));
+ } while (I != E && !isParallelRegion(I->Directive));
DVar.CKind =
(DVarTemp.CKind == OMPC_unknown) ? OMPC_firstprivate : OMPC_shared;
return DVar;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56430.180631.patch
Type: text/x-patch
Size: 2351 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190108/dc494e7c/attachment-0001.bin>
More information about the cfe-commits
mailing list