diff options
Diffstat (limited to 'clang/lib/Serialization/ASTReaderStmt.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index d9d780b25b3..1f6af01b51b 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1856,7 +1856,7 @@ OMPClause *OMPClauseReader::readClause() { C = new (Context) OMPScheduleClause(); break; case OMPC_ordered: - C = new (Context) OMPOrderedClause(); + C = OMPOrderedClause::CreateEmpty(Context, Reader->Record.readInt()); break; case OMPC_nowait: C = new (Context) OMPNowaitClause(); @@ -1928,7 +1928,8 @@ OMPClause *OMPClauseReader::readClause() { C = OMPFlushClause::CreateEmpty(Context, Reader->Record.readInt()); break; case OMPC_depend: - C = OMPDependClause::CreateEmpty(Context, Reader->Record.readInt()); + C = OMPDependClause::CreateEmpty(Context, Reader->Record.readInt(), + Reader->Record.readInt()); break; case OMPC_device: C = new (Context) OMPDeviceClause(); @@ -2087,6 +2088,10 @@ void OMPClauseReader::VisitOMPScheduleClause(OMPScheduleClause *C) { void OMPClauseReader::VisitOMPOrderedClause(OMPOrderedClause *C) { C->setNumForLoops(Reader->Record.readSubExpr()); + for (unsigned I = 0, E = C->NumberOfLoops; I < E; ++I) + C->setLoopNumIterations(I, Reader->Record.readSubExpr()); + for (unsigned I = 0, E = C->NumberOfLoops; I < E; ++I) + C->setLoopCounter(I, Reader->Record.readSubExpr()); C->setLParenLoc(Reader->ReadSourceLocation()); } @@ -2398,7 +2403,8 @@ void OMPClauseReader::VisitOMPDependClause(OMPDependClause *C) { for (unsigned i = 0; i != NumVars; ++i) Vars.push_back(Reader->Record.readSubExpr()); C->setVarRefs(Vars); - C->setCounterValue(Reader->Record.readSubExpr()); + for (unsigned I = 0, E = C->getNumLoops(); I < E; ++I) + C->setLoopData(I, Reader->Record.readSubExpr()); } void OMPClauseReader::VisitOMPDeviceClause(OMPDeviceClause *C) { |