diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2018-12-28 17:27:32 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2018-12-28 17:27:32 +0000 |
commit | db43f0696e266a754630645e892d15ac8ce50a4b (patch) | |
tree | 8225f9d77245af1402469d4b17860ec012a21d18 /clang/lib/Sema/SemaOpenMP.cpp | |
parent | 9123f82cc41094fbee47fd53c068b5c2d340f264 (diff) | |
download | bcm5719-llvm-db43f0696e266a754630645e892d15ac8ce50a4b.tar.gz bcm5719-llvm-db43f0696e266a754630645e892d15ac8ce50a4b.zip |
[OPENMP]Fix processing of the clauses on target combined directives.
For constants with the predefined data-sharing clauses we may had
troubles with the target combined directives. It may cause compiler
crash in some corner cases.
llvm-svn: 350127
Diffstat (limited to 'clang/lib/Sema/SemaOpenMP.cpp')
-rw-r--r-- | clang/lib/Sema/SemaOpenMP.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 24e9ef4aaa2..b4eb4664763 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -1179,10 +1179,13 @@ const DSAStackTy::DSAVarData DSAStackTy::getTopDSA(ValueDecl *D, RD->hasMutableFields())) { // Variables with const-qualified type having no mutable member may be // listed in a firstprivate clause, even if they are static data members. - DSAVarData DVarTemp = - hasDSA(D, [](OpenMPClauseKind C) { return C == OMPC_firstprivate; }, - MatchesAlways, FromParent); - if (DVarTemp.CKind == OMPC_firstprivate && DVarTemp.RefExpr) + DSAVarData DVarTemp = hasInnermostDSA( + D, + [](OpenMPClauseKind C) { + return C == OMPC_firstprivate || C == OMPC_shared; + }, + MatchesAlways, FromParent); + if (DVarTemp.CKind != OMPC_unknown && DVarTemp.RefExpr) return DVarTemp; DVar.CKind = OMPC_shared; |