diff options
author | Chris Lattner <sabre@nondot.org> | 2010-04-05 02:19:28 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-04-05 02:19:28 +0000 |
commit | d850ac79b57e6e0bf68ee93a94d0b3dcd9f6ca35 (patch) | |
tree | 0ccd3f0a544d2c4739abca38c082c3e1d0f4894f /lib/CodeGen | |
parent | cb8660942179416e6505e202d0436ae0d58228d7 (diff) |
fastisel doesn't need DwarfWriter, remove some tendricles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100381 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 31 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.h | 2 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfWriter.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/FastISel.cpp | 7 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 5 |
5 files changed, 28 insertions, 19 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 539eba0133..3d86bf6fc9 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1793,24 +1793,39 @@ void DwarfDebug::constructSubprogramDIE(MDNode *N) { void DwarfDebug::beginModule(Module *M) { if (!Asm->MAI->doesSupportDebugInformation()) return; + + MMI = Asm->MMI; TimeRegion Timer(DebugTimer); - + DebugInfoFinder DbgFinder; DbgFinder.processModule(*M); + bool HasDebugInfo = false; + + // Scan all the compile-units to see if there are any marked as the main unit. + // if not, we do not generate debug info. + for (DebugInfoFinder::iterator I = DbgFinder.compile_unit_begin(), + E = DbgFinder.compile_unit_end(); I != E; ++I) { + if (DICompileUnit(*I).isMain()) { + HasDebugInfo = true; + break; + } + } + + if (!HasDebugInfo) return; + + // Tell MMI that we have debug info. + MMI->setDebugInfoAvailability(true); + // Emit initial sections. - if (DbgFinder.compile_unit_begin() != DbgFinder.compile_unit_end()) - EmitSectionLabels(); + EmitSectionLabels(); // Create all the compile unit DIEs. for (DebugInfoFinder::iterator I = DbgFinder.compile_unit_begin(), E = DbgFinder.compile_unit_end(); I != E; ++I) constructCompileUnit(*I); - if (!ModuleCU) - return; - // Create DIEs for each subprogram. for (DebugInfoFinder::iterator I = DbgFinder.subprogram_begin(), E = DbgFinder.subprogram_end(); I != E; ++I) @@ -1821,10 +1836,6 @@ void DwarfDebug::beginModule(Module *M) { E = DbgFinder.global_variable_end(); I != E; ++I) constructGlobalVariableDIE(*I); - MMI = Asm->MMI; - shouldEmit = true; - MMI->setDebugInfoAvailability(true); - // Prime section data. SectionMap.insert(Asm->getObjFileLowering().getTextSection()); diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index 320691b059..b38e485117 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -60,8 +60,10 @@ public: class DwarfDebug { /// Asm - Target of Dwarf emission. AsmPrinter *Asm; +public: /// MMI - Collected machine module information. MachineModuleInfo *MMI; +private: //===--------------------------------------------------------------------===// // Attributes used to construct specific Dwarf sections. diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index 1b019cd294..acc0066937 100644 --- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp @@ -72,7 +72,7 @@ void DwarfWriter::EndFunction(const MachineFunction *MF) { /// ShouldEmitDwarfDebug - Returns true if Dwarf debugging declarations should /// be emitted. bool DwarfWriter::ShouldEmitDwarfDebug() const { - return DD && DD->ShouldEmitDwarfDebug(); + return DD && DD->MMI->hasDebugInfo(); } void DwarfWriter::BeginScope(const MachineInstr *MI) { diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp index d6f8a205c1..fdb3b5c3ad 100644 --- a/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -47,7 +47,6 @@ #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" @@ -326,8 +325,8 @@ bool FastISel::SelectCall(User *I) { default: break; case Intrinsic::dbg_declare: { DbgDeclareInst *DI = cast<DbgDeclareInst>(I); - if (!DIDescriptor::ValidDebugInfo(DI->getVariable(), CodeGenOpt::None)||!DW - || !DW->ShouldEmitDwarfDebug()) + if (!DIDescriptor::ValidDebugInfo(DI->getVariable(), CodeGenOpt::None) || + !MMI->hasDebugInfo()) return true; Value *Address = DI->getAddress(); @@ -735,7 +734,6 @@ 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 @@ -752,7 +750,6 @@ FastISel::FastISel(MachineFunction &mf, #endif MF(mf), MMI(mmi), - DW(dw), MRI(MF.getRegInfo()), MFI(*MF.getFrameInfo()), MCP(*MF.getConstantPool()), diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index d54566b8cd..69ff94b28c 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -342,7 +342,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) { // Mark landing pad. FuncInfo->MBBMap[Invoke->getSuccessor(1)]->setIsLandingPad(); - SelectAllBasicBlocks(Fn, *MF, MMI, DW, TII); + SelectAllBasicBlocks(Fn, *MF, MMI, 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 @@ -845,12 +845,11 @@ void SelectionDAGISel::DoInstructionSelection() { 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(MF, MMI, DW, + FastIS = TLI.createFastISel(MF, MMI, FuncInfo->ValueMap, FuncInfo->MBBMap, FuncInfo->StaticAllocaMap |