diff options
author | Matheus Izvekov <mizvekov@gmail.com> | 2025-04-11 18:04:18 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-11 18:04:18 -0300 |
commit | 4530922cfdacc5be25dbe499fc106cc3b009bf79 (patch) | |
tree | 4dcdf3eba5a90e531fe1d660a82b2ef679ffbb81 /clang/lib/Serialization/ASTWriterStmt.cpp | |
parent | 2837fd7e5ad521d977fbca85a639ce7afbacdc56 (diff) | |
download | llvm-4530922cfdacc5be25dbe499fc106cc3b009bf79.zip llvm-4530922cfdacc5be25dbe499fc106cc3b009bf79.tar.gz llvm-4530922cfdacc5be25dbe499fc106cc3b009bf79.tar.bz2 |
[clang] fix serialization for SubstNonTypeTemplateParmPackExpr (#135428)
This fixes a PCM non-determinism regression reported here:
https://github.com/llvm/llvm-project/pull/134560#issuecomment-2797744370
There was a bit in `SubstNonTypeTemplateParmPackExpr` which we missed to
serialize, and that bit eventually propagates to
`SubstNonTypeTemplateParmExpr`.
As a drive by, improve serialization for PackIndex on
SubstNonTypeTemplateParmExpr by using the newly introduced
UnsignedOrNone helpers.
There are no release notes since this regression was never released.
Diffstat (limited to 'clang/lib/Serialization/ASTWriterStmt.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 939b37c..b9eabd5 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -2228,9 +2228,7 @@ void ASTStmtWriter::VisitSubstNonTypeTemplateParmExpr( Record.AddDeclRef(E->getAssociatedDecl()); CurrentPackingBits.addBit(E->isReferenceParameter()); CurrentPackingBits.addBits(E->getIndex(), /*Width=*/12); - CurrentPackingBits.addBit((bool)E->getPackIndex()); - if (auto PackIndex = E->getPackIndex()) - Record.push_back(*PackIndex + 1); + Record.writeUnsignedOrNone(E->getPackIndex()); CurrentPackingBits.addBit(E->getFinal()); Record.AddSourceLocation(E->getNameLoc()); @@ -2242,6 +2240,7 @@ void ASTStmtWriter::VisitSubstNonTypeTemplateParmPackExpr( SubstNonTypeTemplateParmPackExpr *E) { VisitExpr(E); Record.AddDeclRef(E->getAssociatedDecl()); + CurrentPackingBits.addBit(E->getFinal()); Record.push_back(E->getIndex()); Record.AddTemplateArgument(E->getArgumentPack()); Record.AddSourceLocation(E->getParameterPackLocation()); |