From: Devang Patel Date: Thu, 2 Jul 2009 00:28:03 +0000 (+0000) Subject: Simplify. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=6d8f1263f40e6b8fc2cd5cce3dfd9ce99fe09226;p=oota-llvm.git Simplify. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74677 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp index 45c7ace78bd..9437e86f0f7 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(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(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(FSI->getSubprogram())); + return true; } case Intrinsic::dbg_declare: { diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp index a5fe32b8535..d4a330b0125 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp @@ -3962,7 +3962,6 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) { MachineFunction &MF = DAG.getMachineFunction(); // If this subprogram does not describe current function then this is // beginning of a inlined function. - bool isInlinedFnStart = !Subprogram.describes(MF.getFunction()); if (isInlinedFnStart && OptLevel != CodeGenOpt::None) // FIXME: Debugging informaation for inlined function is only