diff options
Diffstat (limited to 'clang/lib/Serialization/ASTReaderStmt.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index f9c21e64852..2328dea129a 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1749,9 +1749,10 @@ public: const ASTReader::RecordData &Record, unsigned &Idx) : Reader(R), Context(C), Record(Record), Idx(Idx) { } #define OPENMP_CLAUSE(Name, Class) \ - void Visit##Class(Class *S); + void Visit##Class(Class *C); #include "clang/Basic/OpenMPKinds.def" OMPClause *readClause(); + void VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C); }; } @@ -1892,6 +1893,10 @@ OMPClause *OMPClauseReader::readClause() { return C; } +void OMPClauseReader::VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C) { + C->setPreInitStmt(Reader->Reader.ReadSubStmt()); +} + void OMPClauseReader::VisitOMPIfClause(OMPIfClause *C) { C->setNameModifier(static_cast<OpenMPDirectiveKind>(Record[Idx++])); C->setNameModifierLoc(Reader->ReadSourceLocation(Record, Idx)); @@ -1940,6 +1945,7 @@ void OMPClauseReader::VisitOMPProcBindClause(OMPProcBindClause *C) { } void OMPClauseReader::VisitOMPScheduleClause(OMPScheduleClause *C) { + VisitOMPClauseWithPreInit(C); C->setScheduleKind( static_cast<OpenMPScheduleClauseKind>(Record[Idx++])); C->setFirstScheduleModifier( @@ -1947,7 +1953,6 @@ void OMPClauseReader::VisitOMPScheduleClause(OMPScheduleClause *C) { C->setSecondScheduleModifier( static_cast<OpenMPScheduleClauseModifier>(Record[Idx++])); C->setChunkSize(Reader->Reader.ReadSubExpr()); - C->setHelperChunkSize(Reader->Reader.ReadSubExpr()); C->setLParenLoc(Reader->ReadSourceLocation(Record, Idx)); C->setFirstScheduleModifierLoc(Reader->ReadSourceLocation(Record, Idx)); C->setSecondScheduleModifierLoc(Reader->ReadSourceLocation(Record, Idx)); @@ -2247,10 +2252,10 @@ void OMPClauseReader::VisitOMPHintClause(OMPHintClause *C) { } void OMPClauseReader::VisitOMPDistScheduleClause(OMPDistScheduleClause *C) { + VisitOMPClauseWithPreInit(C); C->setDistScheduleKind( static_cast<OpenMPDistScheduleClauseKind>(Record[Idx++])); C->setChunkSize(Reader->Reader.ReadSubExpr()); - C->setHelperChunkSize(Reader->Reader.ReadSubExpr()); C->setLParenLoc(Reader->ReadSourceLocation(Record, Idx)); C->setDistScheduleKindLoc(Reader->ReadSourceLocation(Record, Idx)); C->setCommaLoc(Reader->ReadSourceLocation(Record, Idx)); @@ -2293,7 +2298,8 @@ void ASTStmtReader::VisitOMPLoopDirective(OMPLoopDirective *D) { D->setCond(Reader.ReadSubExpr()); D->setInit(Reader.ReadSubExpr()); D->setInc(Reader.ReadSubExpr()); - if (isOpenMPWorksharingDirective(D->getDirectiveKind())) { + if (isOpenMPWorksharingDirective(D->getDirectiveKind()) || + isOpenMPTaskLoopDirective(D->getDirectiveKind())) { D->setIsLastIterVariable(Reader.ReadSubExpr()); D->setLowerBoundVariable(Reader.ReadSubExpr()); D->setUpperBoundVariable(Reader.ReadSubExpr()); |