Author: Timm Bäder Date: 2024-02-18T18:07:29+01:00 New Revision: cc2fe7b516c1dbf1f8747ade0f17891f9990dede
URL: https://github.com/llvm/llvm-project/commit/cc2fe7b516c1dbf1f8747ade0f17891f9990dede DIFF: https://github.com/llvm/llvm-project/commit/cc2fe7b516c1dbf1f8747ade0f17891f9990dede.diff LOG: [clang][Interp][NFC] Make Record::{Base,Field} member pointers const Added: Modified: clang/lib/AST/Interp/Descriptor.cpp clang/lib/AST/Interp/Program.cpp clang/lib/AST/Interp/Record.h Removed: ################################################################################ diff --git a/clang/lib/AST/Interp/Descriptor.cpp b/clang/lib/AST/Interp/Descriptor.cpp index f75a9fc4b46650..ce7ed9cec3db3f 100644 --- a/clang/lib/AST/Interp/Descriptor.cpp +++ b/clang/lib/AST/Interp/Descriptor.cpp @@ -139,7 +139,7 @@ static void moveArrayDesc(Block *B, const std::byte *Src, std::byte *Dst, static void ctorRecord(Block *B, std::byte *Ptr, bool IsConst, bool IsMutable, bool IsActive, const Descriptor *D) { const bool IsUnion = D->ElemRecord->isUnion(); - auto CtorSub = [=](unsigned SubOff, Descriptor *F, bool IsBase) { + auto CtorSub = [=](unsigned SubOff, const Descriptor *F, bool IsBase) { auto *Desc = reinterpret_cast<InlineDescriptor *>(Ptr + SubOff) - 1; Desc->Offset = SubOff; Desc->Desc = F; @@ -161,7 +161,7 @@ static void ctorRecord(Block *B, std::byte *Ptr, bool IsConst, bool IsMutable, } static void dtorRecord(Block *B, std::byte *Ptr, const Descriptor *D) { - auto DtorSub = [=](unsigned SubOff, Descriptor *F) { + auto DtorSub = [=](unsigned SubOff, const Descriptor *F) { if (auto Fn = F->DtorFn) Fn(B, Ptr + SubOff, F); }; diff --git a/clang/lib/AST/Interp/Program.cpp b/clang/lib/AST/Interp/Program.cpp index 5624d5955c042c..ec6cdebcd820fa 100644 --- a/clang/lib/AST/Interp/Program.cpp +++ b/clang/lib/AST/Interp/Program.cpp @@ -248,7 +248,7 @@ Record *Program::getOrCreateRecord(const RecordDecl *RD) { // Helper to get a base descriptor. auto GetBaseDesc = [this](const RecordDecl *BD, - const Record *BR) -> Descriptor * { + const Record *BR) -> const Descriptor * { if (!BR) return nullptr; return allocateDescriptor(BD, BR, std::nullopt, /*isConst=*/false, @@ -268,9 +268,9 @@ Record *Program::getOrCreateRecord(const RecordDecl *RD) { // In error cases, the base might not be a RecordType. if (const auto *RT = Spec.getType()->getAs<RecordType>()) { const RecordDecl *BD = RT->getDecl(); + const Record *BR = getOrCreateRecord(BD); - Record *BR = getOrCreateRecord(BD); - if (Descriptor *Desc = GetBaseDesc(BD, BR)) { + if (const Descriptor *Desc = GetBaseDesc(BD, BR)) { BaseSize += align(sizeof(InlineDescriptor)); Bases.push_back({BD, BaseSize, Desc, BR}); BaseSize += align(BR->getSize()); @@ -284,9 +284,9 @@ Record *Program::getOrCreateRecord(const RecordDecl *RD) { if (const auto *RT = Spec.getType()->getAs<RecordType>()) { const RecordDecl *BD = RT->getDecl(); - Record *BR = getOrCreateRecord(BD); + const Record *BR = getOrCreateRecord(BD); - if (Descriptor *Desc = GetBaseDesc(BD, BR)) { + if (const Descriptor *Desc = GetBaseDesc(BD, BR)) { VirtSize += align(sizeof(InlineDescriptor)); VirtBases.push_back({BD, VirtSize, Desc, BR}); VirtSize += align(BR->getSize()); @@ -307,7 +307,7 @@ Record *Program::getOrCreateRecord(const RecordDecl *RD) { QualType FT = FD->getType(); const bool IsConst = FT.isConstQualified(); const bool IsMutable = FD->isMutable(); - Descriptor *Desc; + const Descriptor *Desc; if (std::optional<PrimType> T = Ctx.classify(FT)) { Desc = createDescriptor(FD, *T, std::nullopt, IsConst, /*isTemporary=*/false, IsMutable); diff --git a/clang/lib/AST/Interp/Record.h b/clang/lib/AST/Interp/Record.h index b0952af2d1ac6c..284bb468d6af47 100644 --- a/clang/lib/AST/Interp/Record.h +++ b/clang/lib/AST/Interp/Record.h @@ -28,7 +28,7 @@ class Record final { struct Field { const FieldDecl *Decl; unsigned Offset; - Descriptor *Desc; + const Descriptor *Desc; bool isBitField() const { return Decl->isBitField(); } }; @@ -36,8 +36,8 @@ class Record final { struct Base { const RecordDecl *Decl; unsigned Offset; - Descriptor *Desc; - Record *R; + const Descriptor *Desc; + const Record *R; }; /// Mapping from identifiers to field descriptors. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits