diff options
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
| -rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index fccdecef2785..ad9cc9f62b1f 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -104,6 +104,7 @@ #include "llvm/ADT/IntrusiveRefCntPtr.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/ScopeExit.h" +#include "llvm/ADT/Sequence.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallVector.h" @@ -10596,7 +10597,7 @@ OMPClause *OMPClauseReader::readClause() { break; } case llvm::omp::OMPC_num_teams: - C = new (Context) OMPNumTeamsClause(); + C = OMPNumTeamsClause::CreateEmpty(Context, Record.readInt()); break; case llvm::omp::OMPC_thread_limit: C = new (Context) OMPThreadLimitClause(); @@ -11418,8 +11419,15 @@ void OMPClauseReader::VisitOMPAllocateClause(OMPAllocateClause *C) { void OMPClauseReader::VisitOMPNumTeamsClause(OMPNumTeamsClause *C) { VisitOMPClauseWithPreInit(C); - C->setNumTeams(Record.readSubExpr()); C->setLParenLoc(Record.readSourceLocation()); + unsigned NumVars = C->varlist_size(); + SmallVector<Expr *, 16> Vars; + Vars.reserve(NumVars); + for ([[maybe_unused]] auto _ : llvm::seq<unsigned>(NumVars)) { + (void)_; + Vars.push_back(Record.readSubExpr()); + } + C->setVarRefs(Vars); } void OMPClauseReader::VisitOMPThreadLimitClause(OMPThreadLimitClause *C) { |
