mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
move elf section uniquing to MCContext. Along the way
merge XCore's section into MCSectionELF git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100812 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -38,34 +38,16 @@ using namespace dwarf;
|
||||
//===----------------------------------------------------------------------===//
|
||||
// ELF
|
||||
//===----------------------------------------------------------------------===//
|
||||
typedef StringMap<const MCSectionELF*> ELFUniqueMapTy;
|
||||
|
||||
TargetLoweringObjectFileELF::~TargetLoweringObjectFileELF() {
|
||||
// If we have the section uniquing map, free it.
|
||||
delete (ELFUniqueMapTy*)UniquingMap;
|
||||
}
|
||||
|
||||
const MCSection *TargetLoweringObjectFileELF::
|
||||
getELFSection(StringRef Section, unsigned Type, unsigned Flags,
|
||||
SectionKind Kind, bool IsExplicit) const {
|
||||
if (UniquingMap == 0)
|
||||
UniquingMap = new ELFUniqueMapTy();
|
||||
ELFUniqueMapTy &Map = *(ELFUniqueMapTy*)UniquingMap;
|
||||
return getContext().getELFSection(Section, Type, Flags, Kind, IsExplicit);
|
||||
|
||||
// Do the lookup, if we have a hit, return it.
|
||||
StringMapEntry<const MCSectionELF*> &Entry = Map.GetOrCreateValue(Section);
|
||||
if (Entry.getValue()) return Entry.getValue();
|
||||
|
||||
MCSectionELF *Result = MCSectionELF::Create(Entry.getKey(), Type, Flags, Kind,
|
||||
IsExplicit, getContext());
|
||||
Entry.setValue(Result);
|
||||
return Result;
|
||||
}
|
||||
|
||||
void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
if (UniquingMap != 0)
|
||||
((ELFUniqueMapTy*)UniquingMap)->clear();
|
||||
TargetLoweringObjectFile::Initialize(Ctx, TM);
|
||||
|
||||
BSSSection =
|
||||
|
Reference in New Issue
Block a user