mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +00:00
MachineModuleInfo: Turn nested std::pairs into a proper struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203414 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4b484628f4
commit
1ceef0ef50
@ -168,10 +168,13 @@ class MachineModuleInfo : public ImmutablePass {
|
||||
public:
|
||||
static char ID; // Pass identification, replacement for typeid
|
||||
|
||||
typedef std::pair<unsigned, DebugLoc> UnsignedDebugLocPair;
|
||||
typedef SmallVector<std::pair<TrackingVH<MDNode>, UnsignedDebugLocPair>, 4>
|
||||
VariableDbgInfoMapTy;
|
||||
VariableDbgInfoMapTy VariableDbgInfo;
|
||||
struct VariableDbgInfo {
|
||||
TrackingVH<MDNode> Var;
|
||||
unsigned Slot;
|
||||
DebugLoc Loc;
|
||||
};
|
||||
typedef SmallVector<VariableDbgInfo, 4> VariableDbgInfoMapTy;
|
||||
VariableDbgInfoMapTy VariableDbgInfos;
|
||||
|
||||
MachineModuleInfo(); // DUMMY CONSTRUCTOR, DO NOT CALL.
|
||||
// Real constructor.
|
||||
@ -401,10 +404,11 @@ public:
|
||||
/// setVariableDbgInfo - Collect information used to emit debugging
|
||||
/// information of a variable.
|
||||
void setVariableDbgInfo(MDNode *N, unsigned Slot, DebugLoc Loc) {
|
||||
VariableDbgInfo.push_back(std::make_pair(N, std::make_pair(Slot, Loc)));
|
||||
VariableDbgInfo Info = { N, Slot, Loc };
|
||||
VariableDbgInfos.push_back(std::move(Info));
|
||||
}
|
||||
|
||||
VariableDbgInfoMapTy &getVariableDbgInfo() { return VariableDbgInfo; }
|
||||
VariableDbgInfoMapTy &getVariableDbgInfo() { return VariableDbgInfos; }
|
||||
|
||||
}; // End class MachineModuleInfo
|
||||
|
||||
|
@ -1185,26 +1185,23 @@ bool DwarfDebug::addCurrentFnArgument(DbgVariable *Var, LexicalScope *Scope) {
|
||||
void DwarfDebug::collectVariableInfoFromMMITable(
|
||||
SmallPtrSet<const MDNode *, 16> &Processed) {
|
||||
for (const auto &VI : MMI->getVariableDbgInfo()) {
|
||||
const MDNode *Var = VI.first;
|
||||
if (!Var)
|
||||
if (!VI.Var)
|
||||
continue;
|
||||
Processed.insert(Var);
|
||||
DIVariable DV(Var);
|
||||
const std::pair<unsigned, DebugLoc> &VP = VI.second;
|
||||
|
||||
LexicalScope *Scope = LScopes.findLexicalScope(VP.second);
|
||||
Processed.insert(VI.Var);
|
||||
DIVariable DV(VI.Var);
|
||||
LexicalScope *Scope = LScopes.findLexicalScope(VI.Loc);
|
||||
|
||||
// If variable scope is not found then skip this variable.
|
||||
if (Scope == 0)
|
||||
continue;
|
||||
|
||||
DbgVariable *AbsDbgVariable = findAbstractVariable(DV, VP.second);
|
||||
DbgVariable *AbsDbgVariable = findAbstractVariable(DV, VI.Loc);
|
||||
DbgVariable *RegVar = new DbgVariable(DV, AbsDbgVariable, this);
|
||||
RegVar->setFrameIndex(VP.first);
|
||||
RegVar->setFrameIndex(VI.Slot);
|
||||
if (!addCurrentFnArgument(RegVar, Scope))
|
||||
addScopeVariable(Scope, RegVar);
|
||||
if (AbsDbgVariable)
|
||||
AbsDbgVariable->setFrameIndex(VP.first);
|
||||
AbsDbgVariable->setFrameIndex(VI.Slot);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -313,7 +313,7 @@ void MachineModuleInfo::EndFunction() {
|
||||
CallsEHReturn = 0;
|
||||
CallsUnwindInit = 0;
|
||||
CompactUnwindEncoding = 0;
|
||||
VariableDbgInfo.clear();
|
||||
VariableDbgInfos.clear();
|
||||
}
|
||||
|
||||
/// AnalyzeModule - Scan the module for global debug information.
|
||||
|
@ -473,15 +473,12 @@ void StackColoring::remapInstructions(DenseMap<int, int> &SlotRemap) {
|
||||
MachineModuleInfo *MMI = &MF->getMMI();
|
||||
|
||||
// Remap debug information that refers to stack slots.
|
||||
MachineModuleInfo::VariableDbgInfoMapTy &VMap = MMI->getVariableDbgInfo();
|
||||
for (MachineModuleInfo::VariableDbgInfoMapTy::iterator VI = VMap.begin(),
|
||||
VE = VMap.end(); VI != VE; ++VI) {
|
||||
const MDNode *Var = VI->first;
|
||||
if (!Var) continue;
|
||||
std::pair<unsigned, DebugLoc> &VP = VI->second;
|
||||
if (SlotRemap.count(VP.first)) {
|
||||
DEBUG(dbgs()<<"Remapping debug info for ["<<Var->getName()<<"].\n");
|
||||
VP.first = SlotRemap[VP.first];
|
||||
for (auto &VI : MMI->getVariableDbgInfo()) {
|
||||
if (!VI.Var)
|
||||
continue;
|
||||
if (SlotRemap.count(VI.Slot)) {
|
||||
DEBUG(dbgs()<<"Remapping debug info for ["<<VI.Var->getName()<<"].\n");
|
||||
VI.Slot = SlotRemap[VI.Slot];
|
||||
FixedDbg++;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user