[llvm] r361922 - IR: Give the TypeAllocator a more generic name and start using it for section names as well. NFCI.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Tue May 28 20:28:52 PDT 2019
Author: pcc
Date: Tue May 28 20:28:51 2019
New Revision: 361922
URL: http://llvm.org/viewvc/llvm-project?rev=361922&view=rev
Log:
IR: Give the TypeAllocator a more generic name and start using it for section names as well. NFCI.
This prepares us to start using it for partition names.
Modified:
llvm/trunk/lib/IR/Globals.cpp
llvm/trunk/lib/IR/LLVMContextImpl.h
llvm/trunk/lib/IR/Type.cpp
Modified: llvm/trunk/lib/IR/Globals.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Globals.cpp?rev=361922&r1=361921&r2=361922&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Globals.cpp (original)
+++ llvm/trunk/lib/IR/Globals.cpp Tue May 28 20:28:51 2019
@@ -192,9 +192,8 @@ void GlobalObject::setSection(StringRef
// Get or create a stable section name string and put it in the table in the
// context.
- if (!S.empty()) {
- S = getContext().pImpl->SectionStrings.insert(S).first->first();
- }
+ if (!S.empty())
+ S = getContext().pImpl->Saver.save(S);
getContext().pImpl->GlobalObjectSections[this] = S;
// Update the HasSectionHashEntryBit. Setting the section to the empty string
Modified: llvm/trunk/lib/IR/LLVMContextImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContextImpl.h?rev=361922&r1=361921&r2=361922&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContextImpl.h (original)
+++ llvm/trunk/lib/IR/LLVMContextImpl.h Tue May 28 20:28:51 2019
@@ -30,7 +30,6 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/StringSet.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfoMetadata.h"
@@ -41,6 +40,7 @@
#include "llvm/IR/TrackingMDRef.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Casting.h"
+#include "llvm/Support/StringSaver.h"
#include "llvm/Support/YAMLTraits.h"
#include <algorithm>
#include <cassert>
@@ -1321,9 +1321,8 @@ public:
Type X86_FP80Ty, FP128Ty, PPC_FP128Ty, X86_MMXTy;
IntegerType Int1Ty, Int8Ty, Int16Ty, Int32Ty, Int64Ty, Int128Ty;
- /// TypeAllocator - All dynamically allocated types are allocated from this.
- /// They live forever until the context is torn down.
- BumpPtrAllocator TypeAllocator;
+ BumpPtrAllocator Alloc;
+ UniqueStringSaver Saver{Alloc};
DenseMap<unsigned, IntegerType*> IntegerTypes;
@@ -1357,9 +1356,6 @@ public:
/// Collection of per-GlobalObject sections used in this context.
DenseMap<const GlobalObject *, StringRef> GlobalObjectSections;
- /// Stable collection of section strings.
- StringSet<> SectionStrings;
-
/// DiscriminatorTable - This table maps file:line locations to an
/// integer representing the next DWARF path discriminator to assign to
/// instructions in different blocks at the same location.
Modified: llvm/trunk/lib/IR/Type.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Type.cpp?rev=361922&r1=361921&r2=361922&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Type.cpp (original)
+++ llvm/trunk/lib/IR/Type.cpp Tue May 28 20:28:51 2019
@@ -255,7 +255,7 @@ IntegerType *IntegerType::get(LLVMContex
IntegerType *&Entry = C.pImpl->IntegerTypes[NumBits];
if (!Entry)
- Entry = new (C.pImpl->TypeAllocator) IntegerType(C, NumBits);
+ Entry = new (C.pImpl->Alloc) IntegerType(C, NumBits);
return Entry;
}
@@ -307,7 +307,7 @@ FunctionType *FunctionType::get(Type *Re
if (Insertion.second) {
// The function type was not found. Allocate one and update FunctionTypes
// in-place.
- FT = (FunctionType *)pImpl->TypeAllocator.Allocate(
+ FT = (FunctionType *)pImpl->Alloc.Allocate(
sizeof(FunctionType) + sizeof(Type *) * (Params.size() + 1),
alignof(FunctionType));
new (FT) FunctionType(ReturnType, Params, isVarArg);
@@ -353,7 +353,7 @@ StructType *StructType::get(LLVMContext
if (Insertion.second) {
// The struct type was not found. Allocate one and update AnonStructTypes
// in-place.
- ST = new (Context.pImpl->TypeAllocator) StructType(Context);
+ ST = new (Context.pImpl->Alloc) StructType(Context);
ST->setSubclassData(SCDB_IsLiteral); // Literal struct.
ST->setBody(ETypes, isPacked);
*Insertion.first = ST;
@@ -379,7 +379,7 @@ void StructType::setBody(ArrayRef<Type*>
return;
}
- ContainedTys = Elements.copy(getContext().pImpl->TypeAllocator).data();
+ ContainedTys = Elements.copy(getContext().pImpl->Alloc).data();
}
void StructType::setName(StringRef Name) {
@@ -434,7 +434,7 @@ void StructType::setName(StringRef Name)
// StructType Helper functions.
StructType *StructType::create(LLVMContext &Context, StringRef Name) {
- StructType *ST = new (Context.pImpl->TypeAllocator) StructType(Context);
+ StructType *ST = new (Context.pImpl->Alloc) StructType(Context);
if (!Name.empty())
ST->setName(Name);
return ST;
@@ -585,7 +585,7 @@ ArrayType *ArrayType::get(Type *ElementT
pImpl->ArrayTypes[std::make_pair(ElementType, NumElements)];
if (!Entry)
- Entry = new (pImpl->TypeAllocator) ArrayType(ElementType, NumElements);
+ Entry = new (pImpl->Alloc) ArrayType(ElementType, NumElements);
return Entry;
}
@@ -613,7 +613,7 @@ VectorType *VectorType::get(Type *Elemen
->VectorTypes[std::make_pair(ElementType, NumElements)];
if (!Entry)
- Entry = new (pImpl->TypeAllocator) VectorType(ElementType, NumElements);
+ Entry = new (pImpl->Alloc) VectorType(ElementType, NumElements);
return Entry;
}
@@ -637,7 +637,7 @@ PointerType *PointerType::get(Type *EltT
: CImpl->ASPointerTypes[std::make_pair(EltTy, AddressSpace)];
if (!Entry)
- Entry = new (CImpl->TypeAllocator) PointerType(EltTy, AddressSpace);
+ Entry = new (CImpl->Alloc) PointerType(EltTy, AddressSpace);
return Entry;
}
More information about the llvm-commits
mailing list