Use DebugInfo interface to lower dbg_* intrinsics.
authorDevang Patel <dpatel@apple.com>
Tue, 13 Jan 2009 00:35:13 +0000 (00:35 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 13 Jan 2009 00:35:13 +0000 (00:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62127 91177308-0d34-0410-b5e6-96231b3b80d8

14 files changed:
include/llvm/CodeGen/FastISel.h
include/llvm/CodeGen/SelectionDAG.h
include/llvm/CodeGen/SelectionDAGISel.h
include/llvm/CodeGen/SelectionDAGNodes.h
include/llvm/Target/TargetLowering.h
lib/CodeGen/SelectionDAG/FastISel.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
lib/Target/X86/X86FastISel.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h

index c35d43dc287f54cefcc1ce78fe8690f27b335f0c..0b8d67bfcdb45090d974178d051fb788e9fea773 100644 (file)
@@ -28,6 +28,7 @@ class MachineConstantPool;
 class MachineFunction;
 class MachineFrameInfo;
 class MachineModuleInfo;
+class DwarfWriter;
 class MachineRegisterInfo;
 class TargetData;
 class TargetInstrInfo;
@@ -50,6 +51,7 @@ protected:
 #endif
   MachineFunction &MF;
   MachineModuleInfo *MMI;
+  DwarfWriter *DW;
   MachineRegisterInfo &MRI;
   MachineFrameInfo &MFI;
   MachineConstantPool &MCP;
@@ -115,6 +117,7 @@ public:
 protected:
   FastISel(MachineFunction &mf,
            MachineModuleInfo *mmi,
+           DwarfWriter *dw,
            DenseMap<const Value *, unsigned> &vm,
            DenseMap<const BasicBlock *, MachineBasicBlock *> &bm,
            DenseMap<const AllocaInst *, int> &am
index 45dacfffa9a714891adbce2e02298e5f3b878f1e..7ad7afa4415198e9380ceb7a1bbab0d1455eafcc 100644 (file)
@@ -136,6 +136,7 @@ public:
   TargetLowering &getTargetLoweringInfo() const { return TLI; }
   FunctionLoweringInfo &getFunctionLoweringInfo() const { return FLI; }
   MachineModuleInfo *getMachineModuleInfo() const { return MMI; }
+  DwarfWriter *getDwarfWriter() const { return DW; }
 
   /// viewGraph - Pop up a GraphViz/gv window with the DAG rendered using 'dot'.
   ///
@@ -312,7 +313,7 @@ public:
   SDValue getValueType(MVT);
   SDValue getRegister(unsigned Reg, MVT VT);
   SDValue getDbgStopPoint(SDValue Root, unsigned Line, unsigned Col,
-                            const CompileUnitDesc *CU);
+                          Value *CU);
   SDValue getLabel(unsigned Opcode, SDValue Root, unsigned LabelID);
 
   SDValue getCopyToReg(SDValue Chain, unsigned Reg, SDValue N) {
index 5d244862048555619fca6f0e38bc6f08dfe1a6d5..00219b227a2b8fbd91985dcd98683e676337bd02 100644 (file)
@@ -29,6 +29,7 @@ namespace llvm {
   class MachineFunction;
   class MachineInstr;
   class MachineModuleInfo;
+  class DwarfWriter;
   class TargetLowering;
   class TargetInstrInfo;
   class FunctionLoweringInfo;
@@ -110,6 +111,7 @@ protected:
 private:
   void SelectAllBasicBlocks(Function &Fn, MachineFunction &MF,
                             MachineModuleInfo *MMI,
+                            DwarfWriter *DW,
                             const TargetInstrInfo &TII);
   void FinishBasicBlock();
 
index 9f866316eb5646c525b7bf358a245f1b90d5a6c6..345def3c2647b44c6cb66e5c0cdbcd25901e6584 100644 (file)
@@ -39,7 +39,7 @@ class GlobalValue;
 class MachineBasicBlock;
 class MachineConstantPoolValue;
 class SDNode;
-class CompileUnitDesc;
+class Value;
 template <typename T> struct DenseMapInfo;
 template <typename T> struct simplify_type;
 template <typename T> struct ilist_traits;
@@ -586,7 +586,7 @@ namespace ISD {
 
     // DBG_STOPPOINT - This node is used to represent a source location for
     // debug info.  It takes token chain as input, and carries a line number,
-    // column number, and a pointer to a CompileUnitDesc object identifying
+    // column number, and a pointer to a CompileUnit object identifying
     // the containing compilation unit.  It produces a token chain as output.
     DBG_STOPPOINT,
     
@@ -1981,12 +1981,12 @@ class DbgStopPointSDNode : public SDNode {
   SDUse Chain;
   unsigned Line;
   unsigned Column;
-  const CompileUnitDesc *CU;
+  Value *CU;
   virtual void ANCHOR();  // Out-of-line virtual method to give class a home.
 protected:
   friend class SelectionDAG;
   DbgStopPointSDNode(SDValue ch, unsigned l, unsigned c,
-                     const CompileUnitDesc *cu)
+                     Value *cu)
     : SDNode(ISD::DBG_STOPPOINT, getSDVTList(MVT::Other)),
       Line(l), Column(c), CU(cu) {
     Chain = ch;
@@ -1995,7 +1995,7 @@ protected:
 public:
   unsigned getLine() const { return Line; }
   unsigned getColumn() const { return Column; }
-  const CompileUnitDesc *getCompileUnit() const { return CU; }
+  Value *getCompileUnit() const { return CU; }
 
   static bool classof(const DbgStopPointSDNode *) { return true; }
   static bool classof(const SDNode *N) {
index e6d5ff8621daf7fa8777184ff7590a5cdd2961d4..dc7c6eecddd86d18fdc29c8c3f30cbf6a7d2e8d3 100644 (file)
@@ -43,6 +43,7 @@ namespace llvm {
   class MachineFrameInfo;
   class MachineInstr;
   class MachineModuleInfo;
+  class DwarfWriter;
   class SDNode;
   class SDValue;
   class SelectionDAG;
@@ -1199,7 +1200,7 @@ public:
   /// or null if the target does not support "fast" ISel.
   virtual FastISel *
   createFastISel(MachineFunction &,
-                 MachineModuleInfo *,
+                 MachineModuleInfo *, DwarfWriter *,
                  DenseMap<const Value *, unsigned> &,
                  DenseMap<const BasicBlock *, MachineBasicBlock *> &,
                  DenseMap<const AllocaInst *, int> &
index bcba15192cd4bc5da248a0c444e579e5473839ad..5dd0afbae6fe0466d05a80dd57524b4b26c8b6ee 100644 (file)
@@ -47,6 +47,8 @@
 #include "llvm/CodeGen/MachineInstrBuilder.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/DwarfWriter.h"
+#include "llvm/Analysis/DebugInfo.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetInstrInfo.h"
 #include "llvm/Target/TargetLowering.h"
@@ -315,14 +317,13 @@ bool FastISel::SelectCall(User *I) {
   default: break;
   case Intrinsic::dbg_stoppoint: {
     DbgStopPointInst *SPI = cast<DbgStopPointInst>(I);
-    if (MMI && SPI->getContext() && MMI->Verify(SPI->getContext())) {
-      DebugInfoDesc *DD = MMI->getDescFor(SPI->getContext());
-      assert(DD && "Not a debug information descriptor");
-      const CompileUnitDesc *CompileUnit = cast<CompileUnitDesc>(DD);
-      unsigned SrcFile = MMI->RecordSource(CompileUnit);
+    if (DW && SPI->getContext()) {
+      DICompileUnit CU(cast<GlobalVariable>(SPI->getContext()));
+      unsigned SrcFile = DW->RecordSource(CU.getDirectory(),
+                                          CU.getFilename());
       unsigned Line = SPI->getLine();
       unsigned Col = SPI->getColumn();
-      unsigned ID = MMI->RecordSourceLine(Line, Col, SrcFile);
+      unsigned ID = DW->RecordSourceLine(Line, Col, SrcFile);
       const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
       BuildMI(MBB, II).addImm(ID);
     }
@@ -330,8 +331,9 @@ bool FastISel::SelectCall(User *I) {
   }
   case Intrinsic::dbg_region_start: {
     DbgRegionStartInst *RSI = cast<DbgRegionStartInst>(I);
-    if (MMI && RSI->getContext() && MMI->Verify(RSI->getContext())) {
-      unsigned ID = MMI->RecordRegionStart(RSI->getContext());
+    if (DW && RSI->getContext()) {
+      unsigned ID = 
+        DW->RecordRegionStart(cast<GlobalVariable>(RSI->getContext()));
       const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
       BuildMI(MBB, II).addImm(ID);
     }
@@ -339,30 +341,31 @@ bool FastISel::SelectCall(User *I) {
   }
   case Intrinsic::dbg_region_end: {
     DbgRegionEndInst *REI = cast<DbgRegionEndInst>(I);
-    if (MMI && REI->getContext() && MMI->Verify(REI->getContext())) {
-      unsigned ID = MMI->RecordRegionEnd(REI->getContext());
+    if (DW && REI->getContext()) {
+      unsigned ID = 
+        DW->RecordRegionEnd(cast<GlobalVariable>(REI->getContext()));
       const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
       BuildMI(MBB, II).addImm(ID);
     }
     return true;
   }
   case Intrinsic::dbg_func_start: {
-    if (!MMI) return true;
+    if (!DW) return true;
     DbgFuncStartInst *FSI = cast<DbgFuncStartInst>(I);
     Value *SP = FSI->getSubprogram();
-    if (SP && MMI->Verify(SP)) {
+    if (SP) {
       // llvm.dbg.func.start implicitly defines a dbg_stoppoint which is
       // what (most?) gdb expects.
-      DebugInfoDesc *DD = MMI->getDescFor(SP);
-      assert(DD && "Not a debug information descriptor");
-      SubprogramDesc *Subprogram = cast<SubprogramDesc>(DD);
-      const CompileUnitDesc *CompileUnit = Subprogram->getFile();
-      unsigned SrcFile = MMI->RecordSource(CompileUnit);
+      DISubprogram Subprogram(cast<GlobalVariable>(SP));
+      DICompileUnit CompileUnit = Subprogram.getCompileUnit();
+      unsigned SrcFile = DW->RecordSource(CompileUnit.getDirectory(),
+                                          CompileUnit.getFilename());
       // Record the source line but does not create a label for the normal
       // function start. It will be emitted at asm emission time. However,
       // create a label if this is a beginning of inlined function.
-      unsigned LabelID = MMI->RecordSourceLine(Subprogram->getLine(), 0, SrcFile);
-      if (MMI->getSourceLines().size() != 1) {
+      unsigned LabelID = 
+        DW->RecordSourceLine(Subprogram.getLineNumber(), 0, SrcFile);
+      if (DW->getRecordSourceLineCount() != 1) {
         const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);
         BuildMI(MBB, II).addImm(LabelID);
       }
@@ -372,7 +375,7 @@ bool FastISel::SelectCall(User *I) {
   case Intrinsic::dbg_declare: {
     DbgDeclareInst *DI = cast<DbgDeclareInst>(I);
     Value *Variable = DI->getVariable();
-    if (MMI && Variable && MMI->Verify(Variable)) {
+    if (DW && Variable) {
       // Determine the address of the declared object.
       Value *Address = DI->getAddress();
       if (BitCastInst *BCI = dyn_cast<BitCastInst>(Address))
@@ -682,6 +685,7 @@ FastISel::SelectOperator(User *I, unsigned Opcode) {
 
 FastISel::FastISel(MachineFunction &mf,
                    MachineModuleInfo *mmi,
+                   DwarfWriter *dw,
                    DenseMap<const Value *, unsigned> &vm,
                    DenseMap<const BasicBlock *, MachineBasicBlock *> &bm,
                    DenseMap<const AllocaInst *, int> &am
@@ -698,6 +702,7 @@ FastISel::FastISel(MachineFunction &mf,
 #endif
     MF(mf),
     MMI(mmi),
+    DW(dw),
     MRI(MF.getRegInfo()),
     MFI(*MF.getFrameInfo()),
     MCP(*MF.getConstantPool()),
index c535f3a082b5407c9db68bd4d1f7d74f5a51cfdb..18edb40239e3a872b061b77661f09291f123160b 100644 (file)
@@ -16,6 +16,8 @@
 #include "llvm/CodeGen/MachineFrameInfo.h"
 #include "llvm/CodeGen/MachineJumpTableInfo.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
+#include "llvm/CodeGen/DwarfWriter.h"
+#include "llvm/Analysis/DebugInfo.h"
 #include "llvm/CodeGen/PseudoSourceValue.h"
 #include "llvm/Target/TargetFrameInfo.h"
 #include "llvm/Target/TargetLowering.h"
@@ -26,6 +28,7 @@
 #include "llvm/CallingConv.h"
 #include "llvm/Constants.h"
 #include "llvm/DerivedTypes.h"
+#include "llvm/GlobalVariable.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/MathExtras.h"
@@ -1258,15 +1261,17 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
     case TargetLowering::Promote:
     default: assert(0 && "This action is not supported yet!");
     case TargetLowering::Expand: {
-      MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
+      DwarfWriter *DW = DAG.getDwarfWriter();
       bool useDEBUG_LOC = TLI.isOperationLegal(ISD::DEBUG_LOC, MVT::Other);
       bool useLABEL = TLI.isOperationLegal(ISD::DBG_LABEL, MVT::Other);
       
       const DbgStopPointSDNode *DSP = cast<DbgStopPointSDNode>(Node);
-      if (MMI && (useDEBUG_LOC || useLABEL)) {
-        const CompileUnitDesc *CompileUnit = DSP->getCompileUnit();
-        unsigned SrcFile = MMI->RecordSource(CompileUnit);
-
+      GlobalVariable *CU_GV = cast<GlobalVariable>(DSP->getCompileUnit());
+      if (DW && (useDEBUG_LOC || useLABEL) && !CU_GV->isDeclaration()) {
+        DICompileUnit CU(cast<GlobalVariable>(DSP->getCompileUnit()));
+        unsigned SrcFile = DW->RecordSource(CU.getDirectory(),
+                                            CU.getFilename());
+        
         unsigned Line = DSP->getLine();
         unsigned Col = DSP->getColumn();
         
@@ -1276,7 +1281,7 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
                               DAG.getConstant(SrcFile, MVT::i32) };
           Result = DAG.getNode(ISD::DEBUG_LOC, MVT::Other, Ops, 4);
         } else {
-          unsigned ID = MMI->RecordSourceLine(Line, Col, SrcFile);
+          unsigned ID = DW->RecordSourceLine(Line, Col, SrcFile);
           Result = DAG.getLabel(ISD::DBG_LABEL, Tmp1, ID);
         }
       } else {
index c755eac951642cfcdfd187fcc8c4afe3f7a25a32..324b07025e041e552ac3aead9e1d7d9c1786c104 100644 (file)
@@ -1137,8 +1137,8 @@ SDValue SelectionDAG::getRegister(unsigned RegNo, MVT VT) {
 }
 
 SDValue SelectionDAG::getDbgStopPoint(SDValue Root,
-                                        unsigned Line, unsigned Col,
-                                        const CompileUnitDesc *CU) {
+                                      unsigned Line, unsigned Col,
+                                      Value *CU) {
   SDNode *N = NodeAllocator.Allocate<DbgStopPointSDNode>();
   new (N) DbgStopPointSDNode(Root, Line, Col, CU);
   AllNodes.push_back(N);
index 294acd8370fa6fec5ad88d520b95edd34563227f..d786e5e718127445af7a969e23302b3b766deecf 100644 (file)
@@ -37,6 +37,8 @@
 #include "llvm/CodeGen/MachineRegisterInfo.h"
 #include "llvm/CodeGen/PseudoSourceValue.h"
 #include "llvm/CodeGen/SelectionDAG.h"
+#include "llvm/CodeGen/DwarfWriter.h"
+#include "llvm/Analysis/DebugInfo.h"
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetFrameInfo.h"
@@ -3742,67 +3744,65 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
     return 0;
   }
   case Intrinsic::dbg_stoppoint: {
-    MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
+    DwarfWriter *DW = DAG.getDwarfWriter();
     DbgStopPointInst &SPI = cast<DbgStopPointInst>(I);
-    if (MMI && SPI.getContext() && MMI->Verify(SPI.getContext())) {
-      DebugInfoDesc *DD = MMI->getDescFor(SPI.getContext());
-      assert(DD && "Not a debug information descriptor");
+    if (DW && SPI.getContext())
       DAG.setRoot(DAG.getDbgStopPoint(getRoot(),
                                       SPI.getLine(),
                                       SPI.getColumn(),
-                                      cast<CompileUnitDesc>(DD)));
-    }
-
+                                      SPI.getContext()));
     return 0;
   }
   case Intrinsic::dbg_region_start: {
-    MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
+    DwarfWriter *DW = DAG.getDwarfWriter();
     DbgRegionStartInst &RSI = cast<DbgRegionStartInst>(I);
-    if (MMI && RSI.getContext() && MMI->Verify(RSI.getContext())) {
-      unsigned LabelID = MMI->RecordRegionStart(RSI.getContext());
+    if (DW && RSI.getContext()) {
+      unsigned LabelID = 
+        DW->RecordRegionStart(cast<GlobalVariable>(RSI.getContext()));
       DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getRoot(), LabelID));
     }
 
     return 0;
   }
   case Intrinsic::dbg_region_end: {
-    MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
+    DwarfWriter *DW = DAG.getDwarfWriter();
     DbgRegionEndInst &REI = cast<DbgRegionEndInst>(I);
-    if (MMI && REI.getContext() && MMI->Verify(REI.getContext())) {
-      unsigned LabelID = MMI->RecordRegionEnd(REI.getContext());
+    if (DW && REI.getContext()) {
+      unsigned LabelID = 
+        DW->RecordRegionEnd(cast<GlobalVariable>(REI.getContext()));
       DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getRoot(), LabelID));
     }
 
     return 0;
   }
   case Intrinsic::dbg_func_start: {
-    MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
-    if (!MMI) return 0;
+    DwarfWriter *DW = DAG.getDwarfWriter();
+    if (!DW) return 0;
     DbgFuncStartInst &FSI = cast<DbgFuncStartInst>(I);
     Value *SP = FSI.getSubprogram();
-    if (SP && MMI->Verify(SP)) {
+    if (SP) {
       // llvm.dbg.func.start implicitly defines a dbg_stoppoint which is
       // what (most?) gdb expects.
-      DebugInfoDesc *DD = MMI->getDescFor(SP);
-      assert(DD && "Not a debug information descriptor");
-      SubprogramDesc *Subprogram = cast<SubprogramDesc>(DD);
-      const CompileUnitDesc *CompileUnit = Subprogram->getFile();
-      unsigned SrcFile = MMI->RecordSource(CompileUnit);
+      DISubprogram Subprogram(cast<GlobalVariable>(SP));
+      DICompileUnit CompileUnit = Subprogram.getCompileUnit();
+      unsigned SrcFile = DW->RecordSource(CompileUnit.getDirectory(),
+                                          CompileUnit.getFilename());
       // Record the source line but does not create a label for the normal
       // function start. It will be emitted at asm emission time. However,
       // create a label if this is a beginning of inlined function.
-      unsigned LabelID = MMI->RecordSourceLine(Subprogram->getLine(), 0, SrcFile);
-      if (MMI->getSourceLines().size() != 1)
+      unsigned LabelID = 
+        DW->RecordSourceLine(Subprogram.getLineNumber(), 0, SrcFile);
+      if (DW->getRecordSourceLineCount() != 1)
         DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getRoot(), LabelID));
     }
 
     return 0;
   }
   case Intrinsic::dbg_declare: {
-    MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
+    DwarfWriter *DW = DAG.getDwarfWriter();
     DbgDeclareInst &DI = cast<DbgDeclareInst>(I);
     Value *Variable = DI.getVariable();
-    if (MMI && Variable && MMI->Verify(Variable))
+    if (DW && Variable)
       DAG.setRoot(DAG.getNode(ISD::DECLARE, MVT::Other, getRoot(),
                               getValue(DI.getAddress()), getValue(Variable)));
     return 0;
index 4eb70198817e27d0d76e4be5b20e4d0ef3a9f9bb..3688a13034d4f9670b2f3e8f433a15685ae24ef1 100644 (file)
@@ -327,7 +327,7 @@ bool SelectionDAGISel::runOnFunction(Function &Fn) {
       // Mark landing pad.
       FuncInfo->MBBMap[Invoke->getSuccessor(1)]->setIsLandingPad();
 
-  SelectAllBasicBlocks(Fn, MF, MMI, TII);
+  SelectAllBasicBlocks(Fn, MF, MMI, DW, TII);
 
   // If the first basic block in the function has live ins that need to be
   // copied into vregs, emit the copies into the top of the block before
@@ -696,11 +696,12 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
 
 void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn, MachineFunction &MF,
                                             MachineModuleInfo *MMI,
+                                            DwarfWriter *DW,
                                             const TargetInstrInfo &TII) {
   // Initialize the Fast-ISel state, if needed.
   FastISel *FastIS = 0;
   if (EnableFastISel)
-    FastIS = TLI.createFastISel(*FuncInfo->MF, MMI,
+    FastIS = TLI.createFastISel(*FuncInfo->MF, MMI, DW,
                                 FuncInfo->ValueMap,
                                 FuncInfo->MBBMap,
                                 FuncInfo->StaticAllocaMap
index a528c80ddaead264a8aefe615b074eebecf0948f..9396f16a99e02c99be4835a4e66fd293f0bc7536 100644 (file)
@@ -20,6 +20,7 @@
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/PseudoSourceValue.h"
+#include "llvm/Analysis/DebugInfo.h"
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Support/Debug.h"
@@ -177,7 +178,8 @@ std::string DOTGraphTraits<SelectionDAG*>::getNodeLabel(const SDNode *Node,
       Op += " #" + utostr(R->getReg());
     }
   } else if (const DbgStopPointSDNode *D = dyn_cast<DbgStopPointSDNode>(Node)) {
-    Op += ": " + D->getCompileUnit()->getFileName();
+    DICompileUnit CU(cast<GlobalVariable>(D->getCompileUnit()));
+    Op += ": " + CU.getFilename();
     Op += ":" + utostr(D->getLine());
     if (D->getColumn() != 0)
       Op += ":" + utostr(D->getColumn());
index f7784b407e74e75d00c3ca2635d550ba6f611e88..3a05c8a885227f32c78cb5fa8dda7c9623586f37 100644 (file)
@@ -51,6 +51,7 @@ class X86FastISel : public FastISel {
 public:
   explicit X86FastISel(MachineFunction &mf,
                        MachineModuleInfo *mmi,
+                       DwarfWriter *dw,
                        DenseMap<const Value *, unsigned> &vm,
                        DenseMap<const BasicBlock *, MachineBasicBlock *> &bm,
                        DenseMap<const AllocaInst *, int> &am
@@ -58,7 +59,7 @@ public:
                        , SmallSet<Instruction*, 8> &cil
 #endif
                        )
-    : FastISel(mf, mmi, vm, bm, am
+    : FastISel(mf, mmi, dw, vm, bm, am
 #ifndef NDEBUG
                , cil
 #endif
@@ -1512,6 +1513,7 @@ unsigned X86FastISel::TargetMaterializeAlloca(AllocaInst *C) {
 namespace llvm {
   llvm::FastISel *X86::createFastISel(MachineFunction &mf,
                         MachineModuleInfo *mmi,
+                        DwarfWriter *dw,
                         DenseMap<const Value *, unsigned> &vm,
                         DenseMap<const BasicBlock *, MachineBasicBlock *> &bm,
                         DenseMap<const AllocaInst *, int> &am
@@ -1519,7 +1521,7 @@ namespace llvm {
                         , SmallSet<Instruction*, 8> &cil
 #endif
                         ) {
-    return new X86FastISel(mf, mmi, vm, bm, am
+    return new X86FastISel(mf, mmi, dw, vm, bm, am
 #ifndef NDEBUG
                            , cil
 #endif
index eda29f0c6a875c00bcd9417f3f06282a7a7beac2..fe665c351fab153afc82c2200da65290f4c1f49a 100644 (file)
@@ -1923,6 +1923,7 @@ bool X86TargetLowering::IsEligibleForTailCallOptimization(CallSDNode *TheCall,
 FastISel *
 X86TargetLowering::createFastISel(MachineFunction &mf,
                                   MachineModuleInfo *mmo,
+                                  DwarfWriter *dw,
                                   DenseMap<const Value *, unsigned> &vm,
                                   DenseMap<const BasicBlock *,
                                            MachineBasicBlock *> &bm,
@@ -1931,7 +1932,7 @@ X86TargetLowering::createFastISel(MachineFunction &mf,
                                   , SmallSet<Instruction*, 8> &cil
 #endif
                                   ) {
-  return X86::createFastISel(mf, mmo, vm, bm, am
+  return X86::createFastISel(mf, mmo, dw, vm, bm, am
 #ifndef NDEBUG
                              , cil
 #endif
index 37d126e6d393f694d8afc6fbe999539818d5004e..46005d06947341f29dd023e34b1e8cf489eedc49 100644 (file)
@@ -505,7 +505,7 @@ namespace llvm {
     /// or null if the target does not support "fast" ISel.
     virtual FastISel *
     createFastISel(MachineFunction &mf,
-                   MachineModuleInfo *mmi,
+                   MachineModuleInfo *mmi, DwarfWriter *dw,
                    DenseMap<const Value *, unsigned> &,
                    DenseMap<const BasicBlock *, MachineBasicBlock *> &,
                    DenseMap<const AllocaInst *, int> &
@@ -658,7 +658,7 @@ namespace llvm {
 
   namespace X86 {
     FastISel *createFastISel(MachineFunction &mf,
-                           MachineModuleInfo *mmi,
+                           MachineModuleInfo *mmi, DwarfWriter *dw,
                            DenseMap<const Value *, unsigned> &,
                            DenseMap<const BasicBlock *, MachineBasicBlock *> &,
                            DenseMap<const AllocaInst *, int> &