[clang] [clang] fix serialization of SubstNonTypeTemplateParmExpr (PR #134560)
Matheus Izvekov via cfe-commits
cfe-commits at lists.llvm.org
Sun Apr 6 13:09:57 PDT 2025
https://github.com/mizvekov created https://github.com/llvm/llvm-project/pull/134560
This fixes a couple of mistakes introduced when merging https://github.com/llvm/llvm-project/pull/132748
Fixes msan failure reported here: https://github.com/llvm/llvm-project/pull/132748#issuecomment-2781105225
>From 0e70eb3b7c8a620977d8468f3443de8e31a97dfa Mon Sep 17 00:00:00 2001
From: Matheus Izvekov <mizvekov at gmail.com>
Date: Sun, 6 Apr 2025 17:06:46 -0300
Subject: [PATCH] [clang] fix serialization of SubstNonTypeTemplateParmExpr
This fixes a couple of mistakes introduced when merging
https://github.com/llvm/llvm-project/pull/132748
Fixes msan failure reported here: https://github.com/llvm/llvm-project/pull/132748#issuecomment-2781105225
---
clang/lib/AST/ASTContext.cpp | 2 +-
clang/lib/Serialization/ASTReaderStmt.cpp | 1 +
clang/lib/Serialization/ASTWriterStmt.cpp | 1 +
3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 1b6b3d06ddc1e..320fd4e2f3077 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -7011,7 +7011,7 @@ TemplateName ASTContext::getCanonicalTemplateName(TemplateName Name,
getCanonicalTemplateArgument(subst->getArgumentPack());
return getSubstTemplateTemplateParmPack(
canonArgPack, subst->getAssociatedDecl()->getCanonicalDecl(),
- subst->getFinal(), subst->getIndex());
+ subst->getIndex(), subst->getFinal());
}
case TemplateName::DeducedTemplate: {
assert(IgnoreDeduced == false);
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp
index d26152f3780ed..22fe54b526433 100644
--- a/clang/lib/Serialization/ASTReaderStmt.cpp
+++ b/clang/lib/Serialization/ASTReaderStmt.cpp
@@ -2229,6 +2229,7 @@ void ASTStmtReader::VisitSubstNonTypeTemplateParmExpr(
E->PackIndex = Record.readInt();
else
E->PackIndex = 0;
+ E->Final = CurrentUnpackingBits->getNextBit();
E->SubstNonTypeTemplateParmExprBits.NameLoc = readSourceLocation();
E->Replacement = Record.readSubExpr();
}
diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp
index 23bb5ff22efaf..d0a0f843c7542 100644
--- a/clang/lib/Serialization/ASTWriterStmt.cpp
+++ b/clang/lib/Serialization/ASTWriterStmt.cpp
@@ -2229,6 +2229,7 @@ void ASTStmtWriter::VisitSubstNonTypeTemplateParmExpr(
CurrentPackingBits.addBit((bool)E->getPackIndex());
if (auto PackIndex = E->getPackIndex())
Record.push_back(*PackIndex + 1);
+ CurrentPackingBits.addBit(E->getFinal());
Record.AddSourceLocation(E->getNameLoc());
Record.AddStmt(E->getReplacement());
More information about the cfe-commits
mailing list