diff options
author | Dale Johannesen <dalej@apple.com> | 2008-07-08 21:56:22 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2008-07-08 21:56:22 +0000 |
commit | f71cb9b3ed1d7b3e438e9990ce1587ba275e70bf (patch) | |
tree | 54e43c408df9849657f4d2a222f7d66e20e114d3 | |
parent | 33d9b356ab7d75eba8eb70745051794fe8fcc558 (diff) |
Make debug info come out in data-only files.
This is a question of the debugging setup code not
being called at the right time, and it's called from
target-dependent code for some reason. I have only
attempted to fix Darwin, but I'm pretty sure it's
broken elsewhere; I'll leave that to people who can
test it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53254 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 11 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCAsmPrinter.cpp | 9 | ||||
-rw-r--r-- | lib/Target/X86/X86ATTAsmPrinter.cpp | 18 |
3 files changed, 23 insertions, 15 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index 23e5e37cf0..25b42c5db8 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -42,11 +42,13 @@ STATISTIC(EmittedInsts, "Number of machine instrs printed"); namespace { struct VISIBILITY_HIDDEN ARMAsmPrinter : public AsmPrinter { ARMAsmPrinter(std::ostream &O, TargetMachine &TM, const TargetAsmInfo *T) - : AsmPrinter(O, TM, T), DW(O, this, T), AFI(NULL), InCPMode(false) { + : AsmPrinter(O, TM, T), DW(O, this, T), MMI(0), AFI(NULL), + InCPMode(false) { Subtarget = &TM.getSubtarget<ARMSubtarget>(); } DwarfWriter DW; + MachineModuleInfo *MMI; /// Subtarget - Keep a pointer to the ARMSubtarget around so that we can /// make the right decision when printing asm code for different targets. @@ -176,8 +178,6 @@ FunctionPass *llvm::createARMCodePrinterPass(std::ostream &o, bool ARMAsmPrinter::runOnMachineFunction(MachineFunction &MF) { AFI = MF.getInfo<ARMFunctionInfo>(); - DW.SetModuleInfo(&getAnalysis<MachineModuleInfo>()); - SetupMachineFunction(MF); O << "\n"; @@ -800,6 +800,11 @@ bool ARMAsmPrinter::doInitialization(Module &M) { bool Result = AsmPrinter::doInitialization(M); + // AsmPrinter::doInitialization should have done this analysis. + MMI = getAnalysisToUpdate<MachineModuleInfo>(); + assert(MMI); + DW.SetModuleInfo(MMI); + // Darwin wants symbols to be quoted if they have complex names. if (Subtarget->isTargetDarwin()) Mang->setUseQuotes(true); diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 9c9dd391be..ae967a8d00 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -790,9 +790,6 @@ std::string DarwinAsmPrinter::getSectionForFunction(const Function &F) const { /// method to print assembly for each instruction. /// bool DarwinAsmPrinter::runOnMachineFunction(MachineFunction &MF) { - // We need this for Personality functions. - MMI = &getAnalysis<MachineModuleInfo>(); - DW.SetModuleInfo(MMI); SetupMachineFunction(MF); O << "\n\n"; @@ -887,6 +884,12 @@ bool DarwinAsmPrinter::doInitialization(Module &M) { bool Result = AsmPrinter::doInitialization(M); + // We need this for Personality functions. + // AsmPrinter::doInitialization should have done this analysis. + MMI = getAnalysisToUpdate<MachineModuleInfo>(); + assert(MMI); + DW.SetModuleInfo(MMI); + // Darwin wants symbols to be quoted if they have complex names. Mang->setUseQuotes(true); diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index a61bb2261d..4e1c1dfde1 100644 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -232,13 +232,6 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { const Function *F = MF.getFunction(); unsigned CC = F->getCallingConv(); - if (TAI->doesSupportDebugInformation()) { - // Let PassManager know we need debug information and relay - // the MachineModuleInfo address on to DwarfWriter. - MMI = &getAnalysis<MachineModuleInfo>(); - DW.SetModuleInfo(MMI); - } - SetupMachineFunction(MF); O << "\n\n"; @@ -751,13 +744,20 @@ void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) { /// doInitialization bool X86ATTAsmPrinter::doInitialization(Module &M) { + + bool Result = AsmPrinter::doInitialization(M); + if (TAI->doesSupportDebugInformation()) { // Emit initial debug information. DW.BeginModule(&M); + // Let PassManager know we need debug information and relay + // the MachineModuleInfo address on to DwarfWriter. + // AsmPrinter::doInitialization should have done this analysis. + MMI = getAnalysisToUpdate<MachineModuleInfo>(); + assert(MMI); + DW.SetModuleInfo(MMI); } - bool Result = AsmPrinter::doInitialization(M); - // Darwin wants symbols to be quoted if they have complex names. if (Subtarget->isTargetDarwin()) Mang->setUseQuotes(true); |