summaryrefslogtreecommitdiff
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp27
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");
}