mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Remove the intermediate AccelObjC maps in DWARF units
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207057 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cd9f6b870e
commit
b53610141c
@ -170,7 +170,9 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
|||||||
UsedNonDefaultText(false),
|
UsedNonDefaultText(false),
|
||||||
SkeletonHolder(A, "skel_string", DIEValueAllocator),
|
SkeletonHolder(A, "skel_string", DIEValueAllocator),
|
||||||
AccelNames(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset,
|
AccelNames(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset,
|
||||||
dwarf::DW_FORM_data4)) {
|
dwarf::DW_FORM_data4)),
|
||||||
|
AccelObjC(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset,
|
||||||
|
dwarf::DW_FORM_data4)) {
|
||||||
|
|
||||||
DwarfInfoSectionSym = DwarfAbbrevSectionSym = DwarfStrSectionSym = 0;
|
DwarfInfoSectionSym = DwarfAbbrevSectionSym = DwarfStrSectionSym = 0;
|
||||||
DwarfDebugRangeSectionSym = DwarfDebugLocSectionSym = DwarfLineSectionSym = 0;
|
DwarfDebugRangeSectionSym = DwarfDebugLocSectionSym = DwarfLineSectionSym = 0;
|
||||||
@ -277,9 +279,9 @@ void DwarfDebug::addSubprogramNames(DwarfUnit &TheU, DISubprogram SP,
|
|||||||
if (isObjCClass(SP.getName())) {
|
if (isObjCClass(SP.getName())) {
|
||||||
StringRef Class, Category;
|
StringRef Class, Category;
|
||||||
getObjCClassCategory(SP.getName(), Class, Category);
|
getObjCClassCategory(SP.getName(), Class, Category);
|
||||||
TheU.addAccelObjC(Class, Die);
|
addAccelObjC(Class, Die);
|
||||||
if (Category != "")
|
if (Category != "")
|
||||||
TheU.addAccelObjC(Category, Die);
|
addAccelObjC(Category, Die);
|
||||||
// Also add the base method name to the name table.
|
// Also add the base method name to the name table.
|
||||||
addAccelName(getObjCMethodName(SP.getName()), Die);
|
addAccelName(getObjCMethodName(SP.getName()), Die);
|
||||||
}
|
}
|
||||||
@ -1871,24 +1873,14 @@ void DwarfDebug::emitAccelNames() {
|
|||||||
// Emit objective C classes and categories into a hashed accelerator table
|
// Emit objective C classes and categories into a hashed accelerator table
|
||||||
// section.
|
// section.
|
||||||
void DwarfDebug::emitAccelObjC() {
|
void DwarfDebug::emitAccelObjC() {
|
||||||
DwarfAccelTable AT(
|
AccelObjC.FinalizeTable(Asm, "ObjC");
|
||||||
DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset, dwarf::DW_FORM_data4));
|
|
||||||
for (const auto &TheU : getUnits()) {
|
|
||||||
for (const auto &GI : TheU->getAccelObjC()) {
|
|
||||||
StringRef Name = GI.getKey();
|
|
||||||
for (const DIE *D : GI.second)
|
|
||||||
AT.AddName(Name, D);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AT.FinalizeTable(Asm, "ObjC");
|
|
||||||
Asm->OutStreamer.SwitchSection(
|
Asm->OutStreamer.SwitchSection(
|
||||||
Asm->getObjFileLowering().getDwarfAccelObjCSection());
|
Asm->getObjFileLowering().getDwarfAccelObjCSection());
|
||||||
MCSymbol *SectionBegin = Asm->GetTempSymbol("objc_begin");
|
MCSymbol *SectionBegin = Asm->GetTempSymbol("objc_begin");
|
||||||
Asm->OutStreamer.EmitLabel(SectionBegin);
|
Asm->OutStreamer.EmitLabel(SectionBegin);
|
||||||
|
|
||||||
// Emit the full data.
|
// Emit the full data.
|
||||||
AT.Emit(Asm, SectionBegin, &InfoHolder);
|
AccelObjC.Emit(Asm, SectionBegin, &InfoHolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit namespace dies into a hashed accelerator table.
|
// Emit namespace dies into a hashed accelerator table.
|
||||||
@ -2569,3 +2561,10 @@ void DwarfDebug::addAccelName(StringRef Name, const DIE *Die) {
|
|||||||
InfoHolder.getStringPoolEntry(Name);
|
InfoHolder.getStringPoolEntry(Name);
|
||||||
AccelNames.AddName(Name, Die);
|
AccelNames.AddName(Name, Die);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DwarfDebug::addAccelObjC(StringRef Name, const DIE *Die) {
|
||||||
|
if (!useDwarfAccelTables())
|
||||||
|
return;
|
||||||
|
InfoHolder.getStringPoolEntry(Name);
|
||||||
|
AccelObjC.AddName(Name, Die);
|
||||||
|
}
|
||||||
|
@ -325,6 +325,7 @@ class DwarfDebug : public AsmPrinterHandler {
|
|||||||
AddressPool AddrPool;
|
AddressPool AddrPool;
|
||||||
|
|
||||||
DwarfAccelTable AccelNames;
|
DwarfAccelTable AccelNames;
|
||||||
|
DwarfAccelTable AccelObjC;
|
||||||
|
|
||||||
MCDwarfDwoLineTable *getDwoLineTable(const DwarfCompileUnit &);
|
MCDwarfDwoLineTable *getDwoLineTable(const DwarfCompileUnit &);
|
||||||
|
|
||||||
@ -642,6 +643,8 @@ public:
|
|||||||
AddressPool &getAddressPool() { return AddrPool; }
|
AddressPool &getAddressPool() { return AddrPool; }
|
||||||
|
|
||||||
void addAccelName(StringRef Name, const DIE *Die);
|
void addAccelName(StringRef Name, const DIE *Die);
|
||||||
|
|
||||||
|
void addAccelObjC(StringRef Name, const DIE *Die);
|
||||||
};
|
};
|
||||||
} // End of namespace llvm
|
} // End of namespace llvm
|
||||||
|
|
||||||
|
@ -1065,14 +1065,6 @@ void DwarfUnit::addType(DIE *Entity, DIType Ty, dwarf::Attribute Attribute) {
|
|||||||
addDIEEntry(Entity, Attribute, Entry);
|
addDIEEntry(Entity, Attribute, Entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DwarfUnit::addAccelObjC(StringRef Name, const DIE *Die) {
|
|
||||||
if (!DD->useDwarfAccelTables())
|
|
||||||
return;
|
|
||||||
DU->getStringPoolEntry(Name);
|
|
||||||
std::vector<const DIE *> &DIEs = AccelObjC[Name];
|
|
||||||
DIEs.push_back(Die);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DwarfUnit::addAccelNamespace(StringRef Name, const DIE *Die) {
|
void DwarfUnit::addAccelNamespace(StringRef Name, const DIE *Die) {
|
||||||
if (!DD->useDwarfAccelTables())
|
if (!DD->useDwarfAccelTables())
|
||||||
return;
|
return;
|
||||||
|
@ -102,9 +102,6 @@ protected:
|
|||||||
/// GlobalTypes - A map of globally visible types for this unit.
|
/// GlobalTypes - A map of globally visible types for this unit.
|
||||||
StringMap<const DIE *> GlobalTypes;
|
StringMap<const DIE *> GlobalTypes;
|
||||||
|
|
||||||
/// AccelObjC - A map of objc spec for the objc accelerator table.
|
|
||||||
StringMap<std::vector<const DIE *> > AccelObjC;
|
|
||||||
|
|
||||||
/// AccelNamespace - A map of names for the namespace accelerator table.
|
/// AccelNamespace - A map of names for the namespace accelerator table.
|
||||||
StringMap<std::vector<const DIE *> > AccelNamespace;
|
StringMap<std::vector<const DIE *> > AccelNamespace;
|
||||||
|
|
||||||
@ -228,9 +225,6 @@ public:
|
|||||||
const StringMap<const DIE *> &getGlobalNames() const { return GlobalNames; }
|
const StringMap<const DIE *> &getGlobalNames() const { return GlobalNames; }
|
||||||
const StringMap<const DIE *> &getGlobalTypes() const { return GlobalTypes; }
|
const StringMap<const DIE *> &getGlobalTypes() const { return GlobalTypes; }
|
||||||
|
|
||||||
const StringMap<std::vector<const DIE *> > &getAccelObjC() const {
|
|
||||||
return AccelObjC;
|
|
||||||
}
|
|
||||||
const StringMap<std::vector<const DIE *> > &getAccelNamespace() const {
|
const StringMap<std::vector<const DIE *> > &getAccelNamespace() const {
|
||||||
return AccelNamespace;
|
return AccelNamespace;
|
||||||
}
|
}
|
||||||
@ -269,9 +263,6 @@ public:
|
|||||||
///
|
///
|
||||||
void addGlobalName(StringRef Name, DIE *Die, DIScope Context);
|
void addGlobalName(StringRef Name, DIE *Die, DIScope Context);
|
||||||
|
|
||||||
/// addAccelObjC - Add a new name to the ObjC accelerator table.
|
|
||||||
void addAccelObjC(StringRef Name, const DIE *Die);
|
|
||||||
|
|
||||||
/// addAccelNamespace - Add a new name to the namespace accelerator table.
|
/// addAccelNamespace - Add a new name to the namespace accelerator table.
|
||||||
void addAccelNamespace(StringRef Name, const DIE *Die);
|
void addAccelNamespace(StringRef Name, const DIE *Die);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user