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:
Benjamin Kramer 2014-03-09 15:44:39 +00:00
parent 4b484628f4
commit 1ceef0ef50
4 changed files with 24 additions and 26 deletions

View File

@ -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

View File

@ -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);
}
}

View File

@ -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.

View File

@ -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++;
}
}