[clang] 951b13d - [clang][Interp][NFC] Save IsUnion bit for Records
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Thu May 23 01:21:16 PDT 2024
Author: Timm Bäder
Date: 2024-05-23T10:21:02+02:00
New Revision: 951b13d9a7220d761b1ee0dc09a50b635692ecf8
URL: https://github.com/llvm/llvm-project/commit/951b13d9a7220d761b1ee0dc09a50b635692ecf8
DIFF: https://github.com/llvm/llvm-project/commit/951b13d9a7220d761b1ee0dc09a50b635692ecf8.diff
LOG: [clang][Interp][NFC] Save IsUnion bit for Records
Now that we call this more often, try to keep pointer chasing to a
minimum.
Added:
Modified:
clang/lib/AST/Interp/Record.cpp
clang/lib/AST/Interp/Record.h
Removed:
################################################################################
diff --git a/clang/lib/AST/Interp/Record.cpp b/clang/lib/AST/Interp/Record.cpp
index 6a0a28bc9124b..8ded765fc1c41 100644
--- a/clang/lib/AST/Interp/Record.cpp
+++ b/clang/lib/AST/Interp/Record.cpp
@@ -16,7 +16,7 @@ Record::Record(const RecordDecl *Decl, BaseList &&SrcBases,
FieldList &&SrcFields, VirtualBaseList &&SrcVirtualBases,
unsigned VirtualSize, unsigned BaseSize)
: Decl(Decl), Bases(std::move(SrcBases)), Fields(std::move(SrcFields)),
- BaseSize(BaseSize), VirtualSize(VirtualSize) {
+ BaseSize(BaseSize), VirtualSize(VirtualSize), IsUnion(Decl->isUnion()) {
for (Base &V : SrcVirtualBases)
VirtualBases.push_back({ V.Decl, V.Offset + BaseSize, V.Desc, V.R });
diff --git a/clang/lib/AST/Interp/Record.h b/clang/lib/AST/Interp/Record.h
index cf0480b3f62fa..83e15b125f77a 100644
--- a/clang/lib/AST/Interp/Record.h
+++ b/clang/lib/AST/Interp/Record.h
@@ -53,7 +53,7 @@ class Record final {
/// Returns the name of the underlying declaration.
const std::string getName() const;
/// Checks if the record is a union.
- bool isUnion() const { return getDecl()->isUnion(); }
+ bool isUnion() const { return IsUnion; }
/// Returns the size of the record.
unsigned getSize() const { return BaseSize; }
/// Returns the full size of the record, including records.
@@ -132,6 +132,8 @@ class Record final {
unsigned BaseSize;
/// Size of all virtual bases.
unsigned VirtualSize;
+ /// If this record is a union.
+ bool IsUnion;
};
} // namespace interp
More information about the cfe-commits
mailing list