diff options
author | Devang Patel <dpatel@apple.com> | 2009-07-02 00:28:03 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-07-02 00:28:03 +0000 |
commit | 6d8f1263f40e6b8fc2cd5cce3dfd9ce99fe09226 (patch) | |
tree | d7ff4ec82f1cc1e8c61b446841c4564e772fc8b0 /lib/CodeGen/SelectionDAG/FastISel.cpp | |
parent | f530c92cd55f35f64904e42e38b3a2bc92b347cb (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.cpp | 33 |
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: { |