mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-23 15:29:51 +00:00
MDNodes are not expected to disappear or replaced by another MDNode, so there is no need to pay the cost of WeakVH and ValueMaps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93865 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c99fd879c0
commit
622b02601b
@ -56,12 +56,12 @@ class CompileUnit {
|
|||||||
/// GVToDieMap - Tracks the mapping of unit level debug informaton
|
/// GVToDieMap - Tracks the mapping of unit level debug informaton
|
||||||
/// variables to debug information entries.
|
/// variables to debug information entries.
|
||||||
/// FIXME : Rename GVToDieMap -> NodeToDieMap
|
/// FIXME : Rename GVToDieMap -> NodeToDieMap
|
||||||
ValueMap<MDNode *, DIE *> GVToDieMap;
|
DenseMap<MDNode *, DIE *> GVToDieMap;
|
||||||
|
|
||||||
/// GVToDIEEntryMap - Tracks the mapping of unit level debug informaton
|
/// GVToDIEEntryMap - Tracks the mapping of unit level debug informaton
|
||||||
/// descriptors to debug information entries using a DIEEntry proxy.
|
/// descriptors to debug information entries using a DIEEntry proxy.
|
||||||
/// FIXME : Rename
|
/// FIXME : Rename
|
||||||
ValueMap<MDNode *, DIEEntry *> GVToDIEEntryMap;
|
DenseMap<MDNode *, DIEEntry *> GVToDIEEntryMap;
|
||||||
|
|
||||||
/// Globals - A map of globally visible named entities for this unit.
|
/// Globals - A map of globally visible named entities for this unit.
|
||||||
///
|
///
|
||||||
@ -108,7 +108,7 @@ public:
|
|||||||
/// getDIEEntry - Returns the debug information entry for the speciefied
|
/// getDIEEntry - Returns the debug information entry for the speciefied
|
||||||
/// debug variable.
|
/// debug variable.
|
||||||
DIEEntry *getDIEEntry(MDNode *N) {
|
DIEEntry *getDIEEntry(MDNode *N) {
|
||||||
ValueMap<MDNode *, DIEEntry *>::iterator I = GVToDIEEntryMap.find(N);
|
DenseMap<MDNode *, DIEEntry *>::iterator I = GVToDIEEntryMap.find(N);
|
||||||
if (I == GVToDIEEntryMap.end())
|
if (I == GVToDIEEntryMap.end())
|
||||||
return NULL;
|
return NULL;
|
||||||
return I->second;
|
return I->second;
|
||||||
@ -1162,7 +1162,8 @@ DIE *DwarfDebug::createSubprogramDIE(const DISubprogram &SP, bool MakeDecl) {
|
|||||||
addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
|
addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
|
||||||
addUInt(Block, 0, dwarf::DW_FORM_data1, SP.getVirtualIndex());
|
addUInt(Block, 0, dwarf::DW_FORM_data1, SP.getVirtualIndex());
|
||||||
addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, 0, Block);
|
addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, 0, Block);
|
||||||
ContainingTypeMap.insert(std::make_pair(SPDie, WeakVH(SP.getContainingType().getNode())));
|
ContainingTypeMap.insert(std::make_pair(SPDie,
|
||||||
|
SP.getContainingType().getNode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MakeDecl || !SP.isDefinition()) {
|
if (MakeDecl || !SP.isDefinition()) {
|
||||||
@ -1379,7 +1380,7 @@ DIE *DwarfDebug::constructInlinedScopeDIE(DbgScope *Scope) {
|
|||||||
InlinedSubprogramDIEs.insert(OriginDIE);
|
InlinedSubprogramDIEs.insert(OriginDIE);
|
||||||
|
|
||||||
// Track the start label for this inlined function.
|
// Track the start label for this inlined function.
|
||||||
ValueMap<MDNode *, SmallVector<InlineInfoLabels, 4> >::iterator
|
DenseMap<MDNode *, SmallVector<InlineInfoLabels, 4> >::iterator
|
||||||
I = InlineInfo.find(InlinedSP.getNode());
|
I = InlineInfo.find(InlinedSP.getNode());
|
||||||
|
|
||||||
if (I == InlineInfo.end()) {
|
if (I == InlineInfo.end()) {
|
||||||
@ -1808,7 +1809,7 @@ void DwarfDebug::endModule() {
|
|||||||
TE = TopLevelDIEsVector.end(); TI != TE; ++TI)
|
TE = TopLevelDIEsVector.end(); TI != TE; ++TI)
|
||||||
ModuleCU->getCUDie()->addChild(*TI);
|
ModuleCU->getCUDie()->addChild(*TI);
|
||||||
|
|
||||||
for (DenseMap<DIE *, WeakVH>::iterator CI = ContainingTypeMap.begin(),
|
for (DenseMap<DIE *, MDNode *>::iterator CI = ContainingTypeMap.begin(),
|
||||||
CE = ContainingTypeMap.end(); CI != CE; ++CI) {
|
CE = ContainingTypeMap.end(); CI != CE; ++CI) {
|
||||||
DIE *SPDie = CI->first;
|
DIE *SPDie = CI->first;
|
||||||
MDNode *N = dyn_cast_or_null<MDNode>(CI->second);
|
MDNode *N = dyn_cast_or_null<MDNode>(CI->second);
|
||||||
@ -2042,7 +2043,7 @@ bool DwarfDebug::extractScopeInformation(MachineFunction *MF) {
|
|||||||
// and end of a scope respectively. Create an inverse map that list scopes
|
// and end of a scope respectively. Create an inverse map that list scopes
|
||||||
// starts (and ends) with an instruction. One instruction may start (or end)
|
// starts (and ends) with an instruction. One instruction may start (or end)
|
||||||
// multiple scopes.
|
// multiple scopes.
|
||||||
for (ValueMap<MDNode *, DbgScope *>::iterator DI = DbgScopeMap.begin(),
|
for (DenseMap<MDNode *, DbgScope *>::iterator DI = DbgScopeMap.begin(),
|
||||||
DE = DbgScopeMap.end(); DI != DE; ++DI) {
|
DE = DbgScopeMap.end(); DI != DE; ++DI) {
|
||||||
DbgScope *S = DI->second;
|
DbgScope *S = DI->second;
|
||||||
if (S->isAbstractScope())
|
if (S->isAbstractScope())
|
||||||
@ -2922,7 +2923,7 @@ void DwarfDebug::emitDebugInlineInfo() {
|
|||||||
E = InlinedSPNodes.end(); I != E; ++I) {
|
E = InlinedSPNodes.end(); I != E; ++I) {
|
||||||
|
|
||||||
MDNode *Node = *I;
|
MDNode *Node = *I;
|
||||||
ValueMap<MDNode *, SmallVector<InlineInfoLabels, 4> >::iterator II
|
DenseMap<MDNode *, SmallVector<InlineInfoLabels, 4> >::iterator II
|
||||||
= InlineInfo.find(Node);
|
= InlineInfo.find(Node);
|
||||||
SmallVector<InlineInfoLabels, 4> &Labels = II->second;
|
SmallVector<InlineInfoLabels, 4> &Labels = II->second;
|
||||||
DISubprogram SP(Node);
|
DISubprogram SP(Node);
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include "llvm/CodeGen/MachineLocation.h"
|
#include "llvm/CodeGen/MachineLocation.h"
|
||||||
#include "llvm/Analysis/DebugInfo.h"
|
#include "llvm/Analysis/DebugInfo.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include "llvm/ADT/ValueMap.h"
|
#include "llvm/ADT/DenseMap.h"
|
||||||
#include "llvm/ADT/FoldingSet.h"
|
#include "llvm/ADT/FoldingSet.h"
|
||||||
#include "llvm/ADT/SmallSet.h"
|
#include "llvm/ADT/SmallSet.h"
|
||||||
#include "llvm/ADT/StringMap.h"
|
#include "llvm/ADT/StringMap.h"
|
||||||
@ -136,25 +136,25 @@ class DwarfDebug : public Dwarf {
|
|||||||
|
|
||||||
/// DbgScopeMap - Tracks the scopes in the current function.
|
/// DbgScopeMap - Tracks the scopes in the current function.
|
||||||
///
|
///
|
||||||
ValueMap<MDNode *, DbgScope *> DbgScopeMap;
|
DenseMap<MDNode *, DbgScope *> DbgScopeMap;
|
||||||
|
|
||||||
/// ConcreteScopes - Tracks the concrete scopees in the current function.
|
/// ConcreteScopes - Tracks the concrete scopees in the current function.
|
||||||
/// These scopes are also included in DbgScopeMap.
|
/// These scopes are also included in DbgScopeMap.
|
||||||
ValueMap<MDNode *, DbgScope *> ConcreteScopes;
|
DenseMap<MDNode *, DbgScope *> ConcreteScopes;
|
||||||
|
|
||||||
/// AbstractScopes - Tracks the abstract scopes a module. These scopes are
|
/// AbstractScopes - Tracks the abstract scopes a module. These scopes are
|
||||||
/// not included DbgScopeMap.
|
/// not included DbgScopeMap.
|
||||||
ValueMap<MDNode *, DbgScope *> AbstractScopes;
|
DenseMap<MDNode *, DbgScope *> AbstractScopes;
|
||||||
SmallVector<DbgScope *, 4>AbstractScopesList;
|
SmallVector<DbgScope *, 4>AbstractScopesList;
|
||||||
|
|
||||||
/// AbstractVariables - Collection on abstract variables.
|
/// AbstractVariables - Collection on abstract variables.
|
||||||
ValueMap<MDNode *, DbgVariable *> AbstractVariables;
|
DenseMap<MDNode *, DbgVariable *> AbstractVariables;
|
||||||
|
|
||||||
/// InliendSubprogramDIEs - Collection of subprgram DIEs that are marked
|
/// InliendSubprogramDIEs - Collection of subprgram DIEs that are marked
|
||||||
/// (at the end of the module) as DW_AT_inline.
|
/// (at the end of the module) as DW_AT_inline.
|
||||||
SmallPtrSet<DIE *, 4> InlinedSubprogramDIEs;
|
SmallPtrSet<DIE *, 4> InlinedSubprogramDIEs;
|
||||||
|
|
||||||
DenseMap<DIE *, WeakVH> ContainingTypeMap;
|
DenseMap<DIE *, MDNode *> ContainingTypeMap;
|
||||||
|
|
||||||
/// AbstractSubprogramDIEs - Collection of abstruct subprogram DIEs.
|
/// AbstractSubprogramDIEs - Collection of abstruct subprogram DIEs.
|
||||||
SmallPtrSet<DIE *, 4> AbstractSubprogramDIEs;
|
SmallPtrSet<DIE *, 4> AbstractSubprogramDIEs;
|
||||||
@ -176,7 +176,7 @@ class DwarfDebug : public Dwarf {
|
|||||||
/// InlineInfo - Keep track of inlined functions and their location. This
|
/// InlineInfo - Keep track of inlined functions and their location. This
|
||||||
/// information is used to populate debug_inlined section.
|
/// information is used to populate debug_inlined section.
|
||||||
typedef std::pair<unsigned, DIE *> InlineInfoLabels;
|
typedef std::pair<unsigned, DIE *> InlineInfoLabels;
|
||||||
ValueMap<MDNode *, SmallVector<InlineInfoLabels, 4> > InlineInfo;
|
DenseMap<MDNode *, SmallVector<InlineInfoLabels, 4> > InlineInfo;
|
||||||
SmallVector<MDNode *, 4> InlinedSPNodes;
|
SmallVector<MDNode *, 4> InlinedSPNodes;
|
||||||
|
|
||||||
/// CompileUnitOffsets - A vector of the offsets of the compile units. This is
|
/// CompileUnitOffsets - A vector of the offsets of the compile units. This is
|
||||||
|
Loading…
Reference in New Issue
Block a user