diff options
Diffstat (limited to 'clang/lib/Serialization/ASTWriter.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriter.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 39f8b0f..8d9396e 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -8321,9 +8321,16 @@ void ASTRecordWriter::writeOpenACCClause(const OpenACCClause *C) { case OpenACCClauseKind::Self: { const auto *SC = cast<OpenACCSelfClause>(C); writeSourceLocation(SC->getLParenLoc()); - writeBool(SC->hasConditionExpr()); - if (SC->hasConditionExpr()) - AddStmt(const_cast<Expr*>(SC->getConditionExpr())); + writeBool(SC->isConditionExprClause()); + if (SC->isConditionExprClause()) { + writeBool(SC->hasConditionExpr()); + if (SC->hasConditionExpr()) + AddStmt(const_cast<Expr *>(SC->getConditionExpr())); + } else { + writeUInt32(SC->getVarList().size()); + for (Expr *E : SC->getVarList()) + AddStmt(E); + } return; } case OpenACCClauseKind::NumGangs: { |