Introduce DebugScope which gets embedded into the machine instructions' DebugLoc.

DebugScope refers to a debug region, function or block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72191 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Argyrios Kyrtzidis
2009-05-20 22:57:17 +00:00
parent b60182f1b0
commit a3437647dc
9 changed files with 201 additions and 34 deletions

View File

@@ -403,8 +403,9 @@ unsigned MachineFunction::addLiveIn(unsigned PReg,
/// source file, line, and column. If none currently exists, create a new
/// DebugLocTuple, and insert it into the DebugIdMap.
unsigned MachineFunction::getOrCreateDebugLocID(GlobalVariable *CompileUnit,
DebugScope Scope,
unsigned Line, unsigned Col) {
DebugLocTuple Tuple(CompileUnit, Line, Col);
DebugLocTuple Tuple(CompileUnit, Scope, Line, Col);
DenseMap<DebugLocTuple, unsigned>::iterator II
= DebugLocInfo.DebugIdMap.find(Tuple);
if (II != DebugLocInfo.DebugIdMap.end())
@@ -424,6 +425,21 @@ DebugLocTuple MachineFunction::getDebugLocTuple(DebugLoc DL) const {
return DebugLocInfo.DebugLocations[Idx];
}
/// CreateDebugScope - Create a new debug scope.
DebugScope MachineFunction::CreateDebugScope(GlobalVariable *ScopeGV,
DebugScope Parent) {
DbgScopeInfos.push_back(DebugScopeInfo(ScopeGV, Parent));
return DebugScope::get(DbgScopeInfos.size() - 1);
}
/// getDebugScopeInfo - Get the DebugScopeInfo for a given DebugScope object.
const DebugScopeInfo &MachineFunction::getDebugScopeInfo(DebugScope DS) const {
unsigned Idx = DS.getIndex();
assert(Idx < DbgScopeInfos.size() && "Invalid index into debug scopes!");
return DbgScopeInfos[Idx];
}
//===----------------------------------------------------------------------===//
// MachineFrameInfo implementation
//===----------------------------------------------------------------------===//