aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/SelectionDAG/FastISel.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-07-02 00:28:03 +0000
committerDevang Patel <dpatel@apple.com>2009-07-02 00:28:03 +0000
commit6d8f1263f40e6b8fc2cd5cce3dfd9ce99fe09226 (patch)
treed7ff4ec82f1cc1e8c61b446841c4564e772fc8b0 /lib/CodeGen/SelectionDAG/FastISel.cpp
parentf530c92cd55f35f64904e42e38b3a2bc92b347cb (diff)
Simplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74677 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/FastISel.cpp')
-rw-r--r--lib/CodeGen/SelectionDAG/FastISel.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp
index 45c7ace78b..9437e86f0f 100644
--- a/lib/CodeGen/SelectionDAG/FastISel.cpp
+++ b/lib/CodeGen/SelectionDAG/FastISel.cpp
@@ -376,24 +376,24 @@ bool FastISel::SelectCall(User *I) {
if (!DIDescriptor::ValidDebugInfo(SP, CodeGenOpt::None))
return true;
- // llvm.dbg.func.start implicitly defines a dbg_stoppoint which is what
- // (most?) gdb expects.
- DebugLoc PrevLoc = DL;
DISubprogram Subprogram(cast<GlobalVariable>(SP));
DICompileUnit CompileUnit = Subprogram.getCompileUnit();
+ unsigned Line = Subprogram.getLineNumber();
+ // If this subprogram does not describe current function then this is
+ // beginning of a inlined function.
if (!Subprogram.describes(MF.getFunction())) {
// This is a beginning of an inlined function.
// If llvm.dbg.func.start is seen in a new block before any
// llvm.dbg.stoppoint intrinsic then the location info is unknown.
// FIXME : Why DebugLoc is reset at the beginning of each block ?
+ DebugLoc PrevLoc = DL;
if (PrevLoc.isUnknown())
return true;
// Record the source line.
- unsigned Line = Subprogram.getLineNumber();
- setCurDebugLoc(DebugLoc::get(MF.getOrCreateDebugLocID(
- CompileUnit.getGV(), Line, 0)));
+ unsigned LocID = MF.getOrCreateDebugLocID(CompileUnit.getGV(), Line, 0);
+ setCurDebugLoc(DebugLoc::get(LocID));
if (DW && DW->ShouldEmitDwarfDebug()) {
DebugLocTuple PrevLocTpl = MF.getDebugLocTuple(PrevLoc);
@@ -404,17 +404,18 @@ bool FastISel::SelectCall(User *I) {
const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
BuildMI(MBB, DL, II).addImm(LabelID);
}
- } else {
- // Record the source line.
- unsigned Line = Subprogram.getLineNumber();
- MF.setDefaultDebugLoc(DebugLoc::get(MF.getOrCreateDebugLocID(
- CompileUnit.getGV(), Line, 0)));
- if (DW && DW->ShouldEmitDwarfDebug()) {
- // llvm.dbg.func_start also defines beginning of function scope.
- DW->RecordRegionStart(cast<GlobalVariable>(FSI->getSubprogram()));
- }
+ return true;
}
-
+
+ // This is a beginning of a new function.
+ // Record the source line.
+ unsigned LocID = MF.getOrCreateDebugLocID(CompileUnit.getGV(), Line, 0);
+ MF.setDefaultDebugLoc(DebugLoc::get(LocID));
+
+ if (DW && DW->ShouldEmitDwarfDebug())
+ // llvm.dbg.func_start also defines beginning of function scope.
+ DW->RecordRegionStart(cast<GlobalVariable>(FSI->getSubprogram()));
+
return true;
}
case Intrinsic::dbg_declare: {