diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 11 | ||||
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | 18 | 
3 files changed, 23 insertions, 15 deletions
| diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 23e5e37cf06..25b42c5db8f 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/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/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index 9c9dd391be7..ae967a8d00f 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/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/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp index a61bb2261d6..4e1c1dfde1d 100644 --- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/llvm/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); | 

