From 390f3ace34855a3d4c9e0adf468976375f8c6dc1 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Thu, 16 Apr 2009 01:33:10 +0000 Subject: If FastISel is run and it has known DebugLoc then use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69253 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/FastISel.h | 3 +++ lib/CodeGen/SelectionDAG/SelectionDAGBuild.h | 3 +-- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/llvm/CodeGen/FastISel.h b/include/llvm/CodeGen/FastISel.h index 8c23058..38c1710 100644 --- a/include/llvm/CodeGen/FastISel.h +++ b/include/llvm/CodeGen/FastISel.h @@ -83,6 +83,9 @@ public: /// void setCurDebugLoc(DebugLoc dl) { DL = dl; } + /// getCurDebugLoc() - Return current debug location information. + DebugLoc getCurDebugLoc() const { return DL; } + /// SelectInstruction - Do "fast" instruction selection for the given /// LLVM IR instruction, and append generated machine instructions to /// the current block. Return true if selection was successful. diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h index a9c3d6a..7a76c5f 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h @@ -392,6 +392,7 @@ public: SDValue getControlRoot(); DebugLoc getCurDebugLoc() const { return CurDebugLoc; } + void setCurDebugLoc(DebugLoc dl) { CurDebugLoc = dl; } void CopyValueToVirtualRegister(Value *V, unsigned Reg); @@ -542,8 +543,6 @@ private: const char *implVisitBinaryAtomic(CallInst& I, ISD::NodeType Op); const char *implVisitAluOverflow(CallInst &I, ISD::NodeType Op); - - void setCurDebugLoc(DebugLoc dl) { CurDebugLoc = dl; } }; /// AddCatchInfo - Extract the personality and type infos from an eh.selector diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index d7d0efc..7343b83 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -824,6 +824,7 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn, R = FuncInfo->CreateRegForValue(BI); } + SDL->setCurDebugLoc(FastIS->getCurDebugLoc()); SelectBasicBlock(LLVMBB, BI, next(BI)); // If the instruction was codegen'd with multiple blocks, // inform the FastISel object where to resume inserting. @@ -850,8 +851,12 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn, // Run SelectionDAG instruction selection on the remainder of the block // not handled by FastISel. If FastISel is not run, this is the entire // block. - if (BI != End) + if (BI != End) { + // If FastISel is run and it has known DebugLoc then use it. + if (FastIS && !FastIS->getCurDebugLoc().isUnknown()) + SDL->setCurDebugLoc(FastIS->getCurDebugLoc()); SelectBasicBlock(LLVMBB, BI, End); + } FinishBasicBlock(); } -- cgit v1.1