diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2016-04-29 09:56:11 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2016-04-29 09:56:11 +0000 |
commit | 07b79c24c77ffbe73de920c592df9bcf7bc5104a (patch) | |
tree | 93178f10aea0dfbb3e875f6ef8c0bbaf20ae00c2 /clang/lib | |
parent | e5966e7309515adf7859ff9c4aa9c10199fb1089 (diff) | |
download | bcm5719-llvm-07b79c24c77ffbe73de920c592df9bcf7bc5104a.tar.gz bcm5719-llvm-07b79c24c77ffbe73de920c592df9bcf7bc5104a.zip |
[OPENMP] Fix detection of explicit data-sharing attributes in templates.
Fixes a bug with analysis of data-sharing attributes in templates.
llvm-svn: 268020
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaOpenMP.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 7ab511bd8f5..cbcf70b41fc 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -1416,6 +1416,9 @@ class DSAAttrChecker : public StmtVisitor<DSAAttrChecker, void> { public: void VisitDeclRefExpr(DeclRefExpr *E) { + if (E->isTypeDependent() || E->isValueDependent() || + E->containsUnexpandedParameterPack() || E->isInstantiationDependent()) + return; if (auto *VD = dyn_cast<VarDecl>(E->getDecl())) { // Skip internally declared variables. if (VD->isLocalVarDecl() && !CS->capturesVariable(VD)) @@ -1464,6 +1467,9 @@ public: } } void VisitMemberExpr(MemberExpr *E) { + if (E->isTypeDependent() || E->isValueDependent() || + E->containsUnexpandedParameterPack() || E->isInstantiationDependent()) + return; if (isa<CXXThisExpr>(E->getBase()->IgnoreParens())) { if (auto *FD = dyn_cast<FieldDecl>(E->getMemberDecl())) { auto DVar = Stack->getTopDSA(FD, false); |