diff options
41 files changed, 121 insertions, 69 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 9f011ea4296..be4d43faf8f 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -8821,6 +8821,8 @@ def err_omp_threadprivate_incomplete_type : Error< "threadprivate variable with incomplete type %0">; def err_omp_no_dsa_for_variable : Error< "variable %0 must have explicitly specified data sharing attributes">; +def note_omp_default_dsa_none : Note< + "explicit data sharing attribute requested here">; def err_omp_wrong_dsa : Error< "%0 variable cannot be %1">; def err_omp_variably_modified_type_not_supported : Error< diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 3d2f5b5fbf2..3a8b7adb8b3 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -8890,7 +8890,8 @@ public: /// Check if the specified variable is used in one of the private /// clauses (private, firstprivate, lastprivate, reduction etc.) in OpenMP /// constructs. - VarDecl *isOpenMPCapturedDecl(ValueDecl *D); + VarDecl *isOpenMPCapturedDecl(ValueDecl *D, bool CheckScopeInfo = false, + unsigned StopAt = 0); ExprResult getOpenMPCapturedExpr(VarDecl *Capture, ExprValueKind VK, ExprObjectKind OK, SourceLocation Loc); diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 31d00dc2ed2..f0058381a1b 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -15474,7 +15474,9 @@ bool Sema::tryCaptureVariable( // Capture global variables if it is required to use private copy of this // variable. bool IsGlobal = !Var->hasLocalStorage(); - if (IsGlobal && !(LangOpts.OpenMP && isOpenMPCapturedDecl(Var))) + if (IsGlobal && + !(LangOpts.OpenMP && isOpenMPCapturedDecl(Var, /*CheckScopeInfo=*/true, + MaxFunctionScopesIndex))) return true; Var = Var->getCanonicalDecl(); diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 0aebd8e03a6..49f73a28ac0 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -1695,7 +1695,8 @@ bool Sema::isInOpenMPTargetExecutionDirective() const { false); } -VarDecl *Sema::isOpenMPCapturedDecl(ValueDecl *D) { +VarDecl *Sema::isOpenMPCapturedDecl(ValueDecl *D, bool CheckScopeInfo, + unsigned StopAt) { assert(LangOpts.OpenMP && "OpenMP is not allowed"); D = getCanonicalDecl(D); @@ -1764,6 +1765,22 @@ VarDecl *Sema::isOpenMPCapturedDecl(ValueDecl *D) { } } + if (CheckScopeInfo) { + bool OpenMPFound = false; + for (unsigned I = StopAt + 1; I > 0; --I) { + FunctionScopeInfo *FSI = FunctionScopes[I - 1]; + if(!isa<CapturingScopeInfo>(FSI)) + return nullptr; + if (auto *RSI = dyn_cast<CapturedRegionScopeInfo>(FSI)) + if (RSI->CapRegionKind == CR_OpenMP) { + OpenMPFound = true; + break; + } + } + if (!OpenMPFound) + return nullptr; + } + if (DSAStack->getCurrentDirective() != OMPD_unknown && (!DSAStack->isClauseParsingMode() || DSAStack->getParentDirective() != OMPD_unknown)) { @@ -1780,7 +1797,10 @@ VarDecl *Sema::isOpenMPCapturedDecl(ValueDecl *D) { DVarPrivate = DSAStack->hasDSA(D, isOpenMPPrivate, [](OpenMPDirectiveKind) { return true; }, DSAStack->isClauseParsingMode()); - if (DVarPrivate.CKind != OMPC_unknown) + // The variable is not private or it is the variable in the directive with + // default(none) clause and not used in any clause. + if (DVarPrivate.CKind != OMPC_unknown || + (VD && DSAStack->getDefaultDSA() == DSA_none)) return VD ? VD : cast<VarDecl>(DVarPrivate.PrivateCopy->getDecl()); } return nullptr; @@ -4184,6 +4204,7 @@ StmtResult Sema::ActOnOpenMPExecutableDirective( for (const auto &P : VarsWithInheritedDSA) { Diag(P.second->getExprLoc(), diag::err_omp_no_dsa_for_variable) << P.first << P.second->getSourceRange(); + Diag(DSAStack->getDefaultDSALocation(), diag::note_omp_default_dsa_none); } ErrorFound = !VarsWithInheritedDSA.empty() || ErrorFound; diff --git a/clang/test/OpenMP/distribute_parallel_for_default_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_default_messages.cpp index cb9cbcf6ba4..19042ef8a55 100644 --- a/clang/test/OpenMP/distribute_parallel_for_default_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_default_messages.cpp @@ -24,7 +24,7 @@ T tmain(T argc) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp distribute parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note 2 {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error 2 {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp target @@ -39,7 +39,7 @@ T tmain(T argc) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for default(none) +#pragma omp distribute parallel for default(none) // expected-note 2 {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error 2 {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); @@ -72,7 +72,7 @@ int main(int argc, char **argv) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp distribute parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp target @@ -87,7 +87,7 @@ int main(int argc, char **argv) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for default(none) +#pragma omp distribute parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); diff --git a/clang/test/OpenMP/distribute_parallel_for_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_messages.cpp index 5ea73a88fc5..6bda5d106b7 100644 --- a/clang/test/OpenMP/distribute_parallel_for_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_messages.cpp @@ -81,7 +81,7 @@ L1: } #pragma omp target #pragma omp teams -#pragma omp distribute parallel for default(none) +#pragma omp distribute parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/distribute_parallel_for_simd_default_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_default_messages.cpp index 3014d039d29..80f88a17cec 100644 --- a/clang/test/OpenMP/distribute_parallel_for_simd_default_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_simd_default_messages.cpp @@ -24,7 +24,7 @@ T tmain(T argc) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp distribute parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note 2 {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error 2 {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp target @@ -39,7 +39,7 @@ T tmain(T argc) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd default(none) +#pragma omp distribute parallel for simd default(none) // expected-note 2 {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error 2 {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); @@ -72,7 +72,7 @@ int main(int argc, char **argv) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp distribute parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp target @@ -87,7 +87,7 @@ int main(int argc, char **argv) { foo(); #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd default(none) +#pragma omp distribute parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); diff --git a/clang/test/OpenMP/parallel_default_messages.cpp b/clang/test/OpenMP/parallel_default_messages.cpp index eb4b378f0da..440e91b1038 100644 --- a/clang/test/OpenMP/parallel_default_messages.cpp +++ b/clang/test/OpenMP/parallel_default_messages.cpp @@ -18,14 +18,14 @@ int main(int argc, char **argv) { #pragma omp parallel default (x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} foo(); - #pragma omp parallel default(none) + #pragma omp parallel default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} - #pragma omp parallel default(none) + #pragma omp parallel default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp parallel default(shared) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} - #pragma omp parallel default(none) + #pragma omp parallel default(none) // ge40-note {{explicit data sharing attribute requested here}} (void)c; // ge40-error {{variable 'c' must have explicitly specified data sharing attributes}} return 0; } diff --git a/clang/test/OpenMP/parallel_for_default_messages.cpp b/clang/test/OpenMP/parallel_for_default_messages.cpp index 95f6c9193e9..8baa2f6c045 100644 --- a/clang/test/OpenMP/parallel_for_default_messages.cpp +++ b/clang/test/OpenMP/parallel_for_default_messages.cpp @@ -15,7 +15,7 @@ int main(int argc, char **argv) { #pragma omp parallel for default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (i = 0; i < argc; ++i) foo(); -#pragma omp parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp parallel for default(shared), default(shared) // expected-error {{directive '#pragma omp parallel for' cannot contain more than one 'default' clause}} @@ -25,11 +25,11 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); -#pragma omp parallel for default(none) +#pragma omp parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); -#pragma omp parallel default(none) +#pragma omp parallel default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp parallel for default(shared) for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); diff --git a/clang/test/OpenMP/parallel_for_messages.cpp b/clang/test/OpenMP/parallel_for_messages.cpp index 9ab4bccfc98..f5aa6e66472 100644 --- a/clang/test/OpenMP/parallel_for_messages.cpp +++ b/clang/test/OpenMP/parallel_for_messages.cpp @@ -58,7 +58,7 @@ L1: break; } } -#pragma omp parallel for default(none) +#pragma omp parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/parallel_for_simd_default_messages.cpp b/clang/test/OpenMP/parallel_for_simd_default_messages.cpp index 6d751449bc3..7b30e4106a8 100644 --- a/clang/test/OpenMP/parallel_for_simd_default_messages.cpp +++ b/clang/test/OpenMP/parallel_for_simd_default_messages.cpp @@ -15,7 +15,7 @@ int main(int argc, char **argv) { #pragma omp parallel for simd default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (i = 0; i < argc; ++i) foo(); -#pragma omp parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp parallel for simd default(shared), default(shared) // expected-error {{directive '#pragma omp parallel for simd' cannot contain more than one 'default' clause}} @@ -25,11 +25,11 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); -#pragma omp parallel for simd default(none) +#pragma omp parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); -#pragma omp parallel default(none) +#pragma omp parallel default(none) // expected-note 2 {{explicit data sharing attribute requested here}} #pragma omp parallel for simd default(shared) for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} expected-error {{variable 'i' must have explicitly specified data sharing attributes}} foo(); diff --git a/clang/test/OpenMP/parallel_for_simd_messages.cpp b/clang/test/OpenMP/parallel_for_simd_messages.cpp index f1d4c5b935b..77b9b0851e8 100644 --- a/clang/test/OpenMP/parallel_for_simd_messages.cpp +++ b/clang/test/OpenMP/parallel_for_simd_messages.cpp @@ -58,7 +58,7 @@ L1: break; } } -#pragma omp parallel for simd default(none) +#pragma omp parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/parallel_messages.cpp b/clang/test/OpenMP/parallel_messages.cpp index 8b0c0353c20..aa932e69e37 100644 --- a/clang/test/OpenMP/parallel_messages.cpp +++ b/clang/test/OpenMP/parallel_messages.cpp @@ -7,6 +7,7 @@ void foo() { #pragma omp parallel // expected-error {{unexpected OpenMP directive '#pragma omp parallel'}} +int a; struct S; S& bar(); int main(int argc, char **argv) { @@ -54,8 +55,11 @@ int main(int argc, char **argv) { break; } } - #pragma omp parallel default(none) - ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} +#pragma omp parallel default(none) // expected-note 2 {{explicit data sharing attribute requested here}} + { + ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} + ++a; // expected-error {{variable 'a' must have explicitly specified data sharing attributes}} + } goto L2; // expected-error {{use of undeclared label 'L2'}} #pragma omp parallel @@ -73,3 +77,25 @@ int main(int argc, char **argv) { return 0; } +struct a { + static constexpr int b = 0; +}; +template <bool> struct c; +template <typename d, typename e> bool operator<(d, e); +struct f { + int cbegin; +}; +class g { + f blocks; + void j(); +}; +template <typename> struct is_error_code_enum : a {}; +struct h { + template <typename i, typename = c<is_error_code_enum<i>::b>> h(i); +}; +h operator<(h, h); +void g::j() { +#pragma omp parallel for default(none) + for (auto a = blocks.cbegin; a < blocks; ++a) // expected-error {{invalid operands to binary expression ('f' and 'int')}} + ; +} diff --git a/clang/test/OpenMP/parallel_sections_default_messages.cpp b/clang/test/OpenMP/parallel_sections_default_messages.cpp index b16e5f73695..3d2e74933f1 100644 --- a/clang/test/OpenMP/parallel_sections_default_messages.cpp +++ b/clang/test/OpenMP/parallel_sections_default_messages.cpp @@ -25,12 +25,12 @@ int main(int argc, char **argv) { } } -#pragma omp parallel sections default(none) +#pragma omp parallel sections default(none) // expected-note {{explicit data sharing attribute requested here}} { ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} } -#pragma omp parallel sections default(none) +#pragma omp parallel sections default(none) // expected-note {{explicit data sharing attribute requested here}} { #pragma omp parallel sections default(shared) { diff --git a/clang/test/OpenMP/parallel_sections_messages.cpp b/clang/test/OpenMP/parallel_sections_messages.cpp index 459953acd9a..81f0c517cde 100644 --- a/clang/test/OpenMP/parallel_sections_messages.cpp +++ b/clang/test/OpenMP/parallel_sections_messages.cpp @@ -62,7 +62,7 @@ int main(int argc, char **argv) { break; } } -#pragma omp parallel sections default(none) +#pragma omp parallel sections default(none) // expected-note {{explicit data sharing attribute requested here}} { ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} } diff --git a/clang/test/OpenMP/report_default_DSA.cpp b/clang/test/OpenMP/report_default_DSA.cpp index ba620a4ce8e..d6f8158b0e8 100644 --- a/clang/test/OpenMP/report_default_DSA.cpp +++ b/clang/test/OpenMP/report_default_DSA.cpp @@ -7,7 +7,7 @@ void foo(int x, int n) { for (int iter = 0; iter < x; iter++) { #pragma omp target teams distribute parallel for map( \ from \ - : vec [0:n]) default(none) + : vec [0:n]) default(none) // expected-note 4 {{explicit data sharing attribute requested here}} // expected-error@+1 {{variable 'n' must have explicitly specified data sharing attributes}} for (int ii = 0; ii < n; ii++) { // expected-error@+3 {{variable 'iter' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/target_parallel_default_messages.cpp b/clang/test/OpenMP/target_parallel_default_messages.cpp index 9fb3fac6974..0aab663b0b9 100644 --- a/clang/test/OpenMP/target_parallel_default_messages.cpp +++ b/clang/test/OpenMP/target_parallel_default_messages.cpp @@ -18,14 +18,14 @@ int main(int argc, char **argv) { #pragma omp target parallel default (x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} foo(); - #pragma omp target parallel default(none) + #pragma omp target parallel default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} #pragma omp target parallel default(none) foo(); #pragma omp target parallel default(shared) ++argc; - #pragma omp target parallel default(none) + #pragma omp target parallel default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp parallel default(shared) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/target_parallel_for_default_messages.cpp b/clang/test/OpenMP/target_parallel_for_default_messages.cpp index 94049cd37ba..aba3b300673 100644 --- a/clang/test/OpenMP/target_parallel_for_default_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_default_messages.cpp @@ -15,7 +15,7 @@ int main(int argc, char **argv) { #pragma omp target parallel for default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp target parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp target parallel for default(shared), default(shared) // expected-error {{directive '#pragma omp target parallel for' cannot contain more than one 'default' clause}} @@ -25,7 +25,7 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); -#pragma omp target parallel for default(none) +#pragma omp target parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); diff --git a/clang/test/OpenMP/target_parallel_for_messages.cpp b/clang/test/OpenMP/target_parallel_for_messages.cpp index 6bf4ac28076..c454987e255 100644 --- a/clang/test/OpenMP/target_parallel_for_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_messages.cpp @@ -61,7 +61,7 @@ L1: break; } } -#pragma omp target parallel for default(none) +#pragma omp target parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/target_parallel_for_simd_default_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_default_messages.cpp index b67bfc52e75..4b634e51168 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_default_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_default_messages.cpp @@ -15,7 +15,7 @@ int main(int argc, char **argv) { #pragma omp target parallel for simd default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (i = 0; i < argc; ++i) foo(); -#pragma omp target parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp target parallel for simd default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); #pragma omp target parallel for simd default(shared), default(shared) // expected-error {{directive '#pragma omp target parallel for simd' cannot contain more than one 'default' clause}} @@ -25,7 +25,7 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); -#pragma omp target parallel for simd default(none) +#pragma omp target parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} foo(); diff --git a/clang/test/OpenMP/target_parallel_for_simd_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_messages.cpp index c0e03289d75..76090e85537 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_messages.cpp @@ -61,7 +61,7 @@ L1: break; } } -#pragma omp target parallel for simd default(none) +#pragma omp target parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/target_teams_default_messages.cpp b/clang/test/OpenMP/target_teams_default_messages.cpp index 18520d9e8df..a144fa05f12 100644 --- a/clang/test/OpenMP/target_teams_default_messages.cpp +++ b/clang/test/OpenMP/target_teams_default_messages.cpp @@ -18,10 +18,10 @@ int main(int argc, char **argv) { #pragma omp target teams default (x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} foo(); -#pragma omp target teams default(none) +#pragma omp target teams default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} -#pragma omp target teams default(none) +#pragma omp target teams default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp parallel default(shared) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/target_teams_distribute_default_messages.cpp b/clang/test/OpenMP/target_teams_distribute_default_messages.cpp index 2a3229dde5e..539a296f267 100644 --- a/clang/test/OpenMP/target_teams_distribute_default_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_default_messages.cpp @@ -18,7 +18,7 @@ int main(int argc, char **argv) { #pragma omp target teams distribute default (x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (int i=0; i<200; i++) foo(); - #pragma omp target teams distribute default(none) + #pragma omp target teams distribute default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/target_teams_distribute_messages.cpp b/clang/test/OpenMP/target_teams_distribute_messages.cpp index d3be0f632be..7b2080ae2b0 100644 --- a/clang/test/OpenMP/target_teams_distribute_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_messages.cpp @@ -61,7 +61,7 @@ L1: break; } } -#pragma omp target teams distribute default(none) +#pragma omp target teams distribute default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_default_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_default_messages.cpp index d7c3fbaa9c7..d5ea823858b 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_default_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_default_messages.cpp @@ -18,7 +18,7 @@ int main(int argc, char **argv) { #pragma omp target teams distribute parallel for default (x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (int i=0; i<200; i++) foo(); -#pragma omp target teams distribute parallel for default(none) +#pragma omp target teams distribute parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_messages.cpp index 551acd2e8f0..e70c5df3898 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_messages.cpp @@ -61,7 +61,7 @@ L1: break; } } -#pragma omp target teams distribute parallel for default(none) +#pragma omp target teams distribute parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_default_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_default_messages.cpp index a81aacea4af..d832d8cf161 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_default_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_default_messages.cpp @@ -23,7 +23,7 @@ int main(int argc, char **argv) { #pragma omp target teams distribute parallel for simd default (x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} for (int i=0; i<200; i++) foo(); -#pragma omp target teams distribute parallel for simd default(none) +#pragma omp target teams distribute parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_messages.cpp index 58e88623473..a98f7d83ecd 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_messages.cpp @@ -62,7 +62,7 @@ L1: break; } } -#pragma omp target teams distribute parallel for simd default(none) +#pragma omp target teams distribute parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/target_teams_messages.cpp b/clang/test/OpenMP/target_teams_messages.cpp index bc068f87b61..362767ef1d8 100644 --- a/clang/test/OpenMP/target_teams_messages.cpp +++ b/clang/test/OpenMP/target_teams_messages.cpp @@ -47,14 +47,14 @@ int main(int argc, char **argv) { break; } } -#pragma omp target teams default(none) +#pragma omp target teams default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} -#pragma omp target teams default(none) +#pragma omp target teams default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp parallel num_threads(argc) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} ; -#pragma omp target teams default(none) +#pragma omp target teams default(none) // expected-note {{explicit data sharing attribute requested here}} { #pragma omp parallel num_threads(argc) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} ; diff --git a/clang/test/OpenMP/task_default_messages.cpp b/clang/test/OpenMP/task_default_messages.cpp index 046e388c146..0eb26856e78 100644 --- a/clang/test/OpenMP/task_default_messages.cpp +++ b/clang/test/OpenMP/task_default_messages.cpp @@ -13,10 +13,10 @@ int main(int argc, char **argv) { #pragma omp task default(x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} foo(); -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp task default(shared) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/task_firstprivate_messages.cpp b/clang/test/OpenMP/task_firstprivate_messages.cpp index b34cda78d1e..f299c755183 100644 --- a/clang/test/OpenMP/task_firstprivate_messages.cpp +++ b/clang/test/OpenMP/task_firstprivate_messages.cpp @@ -23,7 +23,7 @@ template <typename T> struct S { T b; S(T a, T c) { -#pragma omp task default(none) firstprivate(a, b) +#pragma omp task default(none) firstprivate(a, b) // expected-note {{explicit data sharing attribute requested here}} a = b = c; // expected-error {{variable 'c' must have explicitly specified data sharing attributes}} } }; diff --git a/clang/test/OpenMP/task_messages.cpp b/clang/test/OpenMP/task_messages.cpp index d490c7f8ea4..92bb14983b8 100644 --- a/clang/test/OpenMP/task_messages.cpp +++ b/clang/test/OpenMP/task_messages.cpp @@ -38,10 +38,10 @@ int foo() { #pragma omp task // expected-note@+1 2 {{predetermined as a firstprivate in a task construct here}} ++s1; -#pragma omp task default(none) +#pragma omp task default(none) // expected-note 2 {{explicit data sharing attribute requested here}} #pragma omp task default(shared) ++a; // expected-error 2 {{variable 'a' must have explicitly specified data sharing attributes}} -#pragma omp task default(none) +#pragma omp task default(none) // expected-note 2 {{explicit data sharing attribute requested here}} #pragma omp task // expected-error@+1 {{calling a private constructor of class 'S'}} ++a; // expected-error 2 {{variable 'a' must have explicitly specified data sharing attributes}} @@ -167,7 +167,7 @@ L1: break; } } -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} goto L2; // expected-error {{use of undeclared label 'L2'}} @@ -184,10 +184,10 @@ L2: for (int n = 0; n < 100; ++n) { } -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp task default(shared) ++a; // expected-error {{variable 'a' must have explicitly specified data sharing attributes}} -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp task ++a; // expected-error {{variable 'a' must have explicitly specified data sharing attributes}} #pragma omp task default(shared) @@ -201,10 +201,10 @@ L2: #pragma omp task #pragma omp parallel shared(a, b) ++a, ++b; -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp task default(shared) ++sa; // expected-error {{variable 'sa' must have explicitly specified data sharing attributes}} -#pragma omp task default(none) +#pragma omp task default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp task // expected-error@+1 {{calling a private constructor of class 'S'}} ++sa; // expected-error {{variable 'sa' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/teams_default_messages.cpp b/clang/test/OpenMP/teams_default_messages.cpp index c032f5e482c..28a5e2902c6 100644 --- a/clang/test/OpenMP/teams_default_messages.cpp +++ b/clang/test/OpenMP/teams_default_messages.cpp @@ -25,11 +25,11 @@ int main(int argc, char **argv) { foo(); #pragma omp target - #pragma omp teams default(none) + #pragma omp teams default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} #pragma omp target - #pragma omp teams default(none) + #pragma omp teams default(none) // expected-note {{explicit data sharing attribute requested here}} #pragma omp parallel default(shared) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/teams_distribute_default_messages.cpp b/clang/test/OpenMP/teams_distribute_default_messages.cpp index 5e8702a99d9..9ebce9aea05 100644 --- a/clang/test/OpenMP/teams_distribute_default_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_default_messages.cpp @@ -25,7 +25,7 @@ int main(int argc, char **argv) { for (int i=0; i<200; i++) foo(); #pragma omp target - #pragma omp teams distribute default(none) + #pragma omp teams distribute default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_default_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_default_messages.cpp index e5b33315203..efc139d84ad 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_default_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_default_messages.cpp @@ -25,7 +25,7 @@ int main(int argc, char **argv) { for (int i=0; i<200; i++) foo(); #pragma omp target - #pragma omp teams distribute parallel for default(none) + #pragma omp teams distribute parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_messages.cpp index 57ad6663802..b8617838420 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_messages.cpp @@ -76,7 +76,7 @@ L1: } } #pragma omp target -#pragma omp teams distribute parallel for default(none) +#pragma omp teams distribute parallel for default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_default_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_default_messages.cpp index 8db9d668fd3..4de844737a4 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_default_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_default_messages.cpp @@ -25,7 +25,7 @@ int main(int argc, char **argv) { for (int i=0; i<200; i++) foo(); #pragma omp target - #pragma omp teams distribute parallel for simd default(none) + #pragma omp teams distribute parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_messages.cpp index d27e156161f..e95ddfc6690 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_messages.cpp @@ -76,7 +76,7 @@ L1: } } #pragma omp target -#pragma omp teams distribute parallel for simd default(none) +#pragma omp teams distribute parallel for simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/teams_distribute_simd_default_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_default_messages.cpp index af176f46cbf..8f6db01efb3 100644 --- a/clang/test/OpenMP/teams_distribute_simd_default_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_simd_default_messages.cpp @@ -25,7 +25,7 @@ int main(int argc, char **argv) { for (int i=0; i<200; i++) foo(); #pragma omp target - #pragma omp teams distribute simd default(none) + #pragma omp teams distribute simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i=0; i<200; i++) ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} return 0; diff --git a/clang/test/OpenMP/teams_distribute_simd_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_messages.cpp index 79128706bc9..7a99e3f352f 100644 --- a/clang/test/OpenMP/teams_distribute_simd_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_simd_messages.cpp @@ -76,7 +76,7 @@ L1: } } #pragma omp target -#pragma omp teams distribute simd default(none) +#pragma omp teams distribute simd default(none) // expected-note {{explicit data sharing attribute requested here}} for (int i = 0; i < 10; ++i) ++argc; // expected-error {{ariable 'argc' must have explicitly specified data sharing attributes}} diff --git a/clang/test/OpenMP/teams_messages.cpp b/clang/test/OpenMP/teams_messages.cpp index 6ed3be9da58..bba7da2e0e3 100644 --- a/clang/test/OpenMP/teams_messages.cpp +++ b/clang/test/OpenMP/teams_messages.cpp @@ -63,7 +63,7 @@ int main(int argc, char **argv) { } } #pragma omp target - #pragma omp teams default(none) + #pragma omp teams default(none) // expected-note {{explicit data sharing attribute requested here}} ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} goto L2; // expected-error {{use of undeclared label 'L2'}} |