diff options
author | Sergei Barannikov <barannikov88@gmail.com> | 2024-08-13 20:10:35 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-13 20:10:35 +0300 |
commit | b1aa0b0b88a0bca2553f8c6d6c52ec3b7205064b (patch) | |
tree | b990fab356abb2c73168435f93d04ea870833c1a /llvm/lib/IR/DataLayout.cpp | |
parent | f0ef1d3bae02cd7623e87e759db19432717f51bf (diff) | |
download | llvm-b1aa0b0b88a0bca2553f8c6d6c52ec3b7205064b.zip llvm-b1aa0b0b88a0bca2553f8c6d6c52ec3b7205064b.tar.gz llvm-b1aa0b0b88a0bca2553f8c6d6c52ec3b7205064b.tar.bz2 |
[DataLayout] Remove `clear` and `reset` methods (NFC) (#102993)
`clear` was never necessary as it is always called on a fresh instance
of the class or just before freeing an instance's memory. `reset` is
effectively the same as the constructor.
Pull Reuquest: https://github.com/llvm/llvm-project/pull/102993
Diffstat (limited to 'llvm/lib/IR/DataLayout.cpp')
-rw-r--r-- | llvm/lib/IR/DataLayout.cpp | 77 |
1 files changed, 29 insertions, 48 deletions
diff --git a/llvm/lib/IR/DataLayout.cpp b/llvm/lib/IR/DataLayout.cpp index 1efa61e..ae0ff9c 100644 --- a/llvm/lib/IR/DataLayout.cpp +++ b/llvm/lib/IR/DataLayout.cpp @@ -117,6 +117,27 @@ unsigned StructLayout::getElementContainingOffset(uint64_t FixedOffset) const { return SI - MemberOffsets.begin(); } +namespace { + +class StructLayoutMap { + using LayoutInfoTy = DenseMap<StructType *, StructLayout *>; + LayoutInfoTy LayoutInfo; + +public: + ~StructLayoutMap() { + // Remove any layouts. + for (const auto &I : LayoutInfo) { + StructLayout *Value = I.second; + Value->~StructLayout(); + free(Value); + } + } + + StructLayout *&operator[](StructType *STy) { return LayoutInfo[STy]; } +}; + +} // end anonymous namespace + //===----------------------------------------------------------------------===// // LayoutAlignElem, LayoutAlign support //===----------------------------------------------------------------------===// @@ -191,36 +212,31 @@ static const std::pair<AlignTypeEnum, LayoutAlignElem> DefaultAlignments[] = { {VECTOR_ALIGN, {128, Align(16), Align(16)}}, // v16i8, v8i16, v4i32, ... }; -void DataLayout::reset(StringRef Desc) { - clear(); - - LayoutMap = nullptr; +DataLayout::DataLayout(StringRef LayoutString) { BigEndian = false; AllocaAddrSpace = 0; - StackNaturalAlign.reset(); ProgramAddrSpace = 0; DefaultGlobalsAddrSpace = 0; - FunctionPtrAlign.reset(); TheFunctionPtrAlignType = FunctionPtrAlignType::Independent; ManglingMode = MM_None; - NonIntegralAddressSpaces.clear(); StructAlignment = LayoutAlignElem::get(Align(1), Align(8), 0); // Default alignments for (const auto &[Kind, Layout] : DefaultAlignments) { if (Error Err = setAlignment(Kind, Layout.ABIAlign, Layout.PrefAlign, Layout.TypeBitWidth)) - return report_fatal_error(std::move(Err)); + report_fatal_error(std::move(Err)); } if (Error Err = setPointerAlignmentInBits(0, Align(8), Align(8), 64, 64)) - return report_fatal_error(std::move(Err)); + report_fatal_error(std::move(Err)); - if (Error Err = parseSpecifier(Desc)) - return report_fatal_error(std::move(Err)); + if (Error Err = parseSpecifier(LayoutString)) + report_fatal_error(std::move(Err)); } DataLayout &DataLayout::operator=(const DataLayout &Other) { - clear(); + delete static_cast<StructLayoutMap *>(LayoutMap); + LayoutMap = nullptr; StringRepresentation = Other.StringRepresentation; BigEndian = Other.BigEndian; AllocaAddrSpace = Other.AllocaAddrSpace; @@ -693,42 +709,7 @@ Align DataLayout::getIntegerAlignment(uint32_t BitWidth, return abi_or_pref ? I->ABIAlign : I->PrefAlign; } -namespace { - -class StructLayoutMap { - using LayoutInfoTy = DenseMap<StructType*, StructLayout*>; - LayoutInfoTy LayoutInfo; - -public: - ~StructLayoutMap() { - // Remove any layouts. - for (const auto &I : LayoutInfo) { - StructLayout *Value = I.second; - Value->~StructLayout(); - free(Value); - } - } - - StructLayout *&operator[](StructType *STy) { - return LayoutInfo[STy]; - } -}; - -} // end anonymous namespace - -void DataLayout::clear() { - LegalIntWidths.clear(); - IntAlignments.clear(); - FloatAlignments.clear(); - VectorAlignments.clear(); - Pointers.clear(); - delete static_cast<StructLayoutMap *>(LayoutMap); - LayoutMap = nullptr; -} - -DataLayout::~DataLayout() { - clear(); -} +DataLayout::~DataLayout() { delete static_cast<StructLayoutMap *>(LayoutMap); } const StructLayout *DataLayout::getStructLayout(StructType *Ty) const { if (!LayoutMap) |