diff options
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
| -rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 97b79bd1381c..31881a39de47 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -10003,7 +10003,8 @@ void ASTReader::finishPendingActions() { auto RTD = cast<RedeclarableTemplateDecl>(D)->getCanonicalDecl(); for (auto *R = getMostRecentExistingDecl(RTD); R; R = R->getPreviousDecl()) - cast<RedeclarableTemplateDecl>(R)->Common = RTD->Common; + cast<RedeclarableTemplateDecl>(R)->setCommonPtr( + RTD->getCommonPtrInternal()); } PendingDefinitions.clear(); @@ -10604,6 +10605,11 @@ OMPClause *OMPClauseReader::readClause() { C = OMPSizesClause::CreateEmpty(Context, NumSizes); break; } + case llvm::omp::OMPC_permutation: { + unsigned NumLoops = Record.readInt(); + C = OMPPermutationClause::CreateEmpty(Context, NumLoops); + break; + } case llvm::omp::OMPC_full: C = OMPFullClause::CreateEmpty(Context); break; @@ -10992,6 +10998,12 @@ void OMPClauseReader::VisitOMPSizesClause(OMPSizesClause *C) { C->setLParenLoc(Record.readSourceLocation()); } +void OMPClauseReader::VisitOMPPermutationClause(OMPPermutationClause *C) { + for (Expr *&E : C->getArgsRefs()) + E = Record.readSubExpr(); + C->setLParenLoc(Record.readSourceLocation()); +} + void OMPClauseReader::VisitOMPFullClause(OMPFullClause *C) {} void OMPClauseReader::VisitOMPPartialClause(OMPPartialClause *C) { @@ -12315,6 +12327,18 @@ OpenACCClause *ASTRecordReader::readOpenACCClause() { return OpenACCTileClause::Create(getContext(), BeginLoc, LParenLoc, SizeExprs, EndLoc); } + case OpenACCClauseKind::Gang: { + SourceLocation LParenLoc = readSourceLocation(); + unsigned NumExprs = readInt(); + llvm::SmallVector<OpenACCGangKind> GangKinds; + llvm::SmallVector<Expr *> Exprs; + for (unsigned I = 0; I < NumExprs; ++I) { + GangKinds.push_back(readEnum<OpenACCGangKind>()); + Exprs.push_back(readSubExpr()); + } + return OpenACCGangClause::Create(getContext(), BeginLoc, LParenLoc, + GangKinds, Exprs, EndLoc); + } case OpenACCClauseKind::Finalize: case OpenACCClauseKind::IfPresent: @@ -12331,7 +12355,6 @@ OpenACCClause *ASTRecordReader::readOpenACCClause() { case OpenACCClauseKind::Bind: case OpenACCClauseKind::DeviceNum: case OpenACCClauseKind::DefaultAsync: - case OpenACCClauseKind::Gang: case OpenACCClauseKind::Invalid: llvm_unreachable("Clause serialization not yet implemented"); } |
