diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2008-06-28 11:09:01 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2008-06-28 11:09:01 +0000 |
| commit | 76b8828c258a4694fc04958cd9c5664d25ceef9c (patch) | |
| tree | e1586e57a428de432ac52b1c5876a0ad69ecabc5 /llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | |
| parent | 7d345eb4b145b78d1d18fe8272a13a6ca4224a4f (diff) | |
| download | bcm5719-llvm-76b8828c258a4694fc04958cd9c5664d25ceef9c.tar.gz bcm5719-llvm-76b8828c258a4694fc04958cd9c5664d25ceef9c.zip | |
Factor out stuff into helper function
llvm-svn: 52862
Diffstat (limited to 'llvm/lib/Target/X86/X86ATTAsmPrinter.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | 70 |
1 files changed, 37 insertions, 33 deletions
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp index 602fa51e3ae..5b3e420a8fd 100644 --- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -167,31 +167,8 @@ std::string X86ATTAsmPrinter::getSectionForFunction(const Function &F) const { } } -/// runOnMachineFunction - This uses the printMachineInstruction() -/// method to print assembly for each instruction. -/// -bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { - 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"; - - // Print out constants referenced by the function - EmitConstantPool(MF.getConstantPool()); - - // Print out labels for the function. +void X86ATTAsmPrinter::emitFunctionHeader(const MachineFunction &MF) { const Function *F = MF.getFunction(); - unsigned CC = F->getCallingConv(); - - // Populate function information map. Actually, We don't want to populate - // non-stdcall or non-fastcall functions' information right now. - if (CC == CallingConv::X86_StdCall || CC == CallingConv::X86_FastCall) - FunctionInfoMap[F] = *MF.getInfo<X86MachineFunctionInfo>(); decorateName(CurrentFnName, F); @@ -204,8 +181,6 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { EmitAlignment(FnAlign, F); break; case Function::DLLExportLinkage: - DLLExportedFns.insert(Mang->makeNameProper(F->getName(), "")); - //FALLS THROUGH case Function::ExternalLinkage: EmitAlignment(FnAlign, F); O << "\t.globl\t" << CurrentFnName << "\n"; @@ -248,13 +223,43 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { (F->getLinkage() == Function::LinkOnceLinkage || F->getLinkage() == Function::WeakLinkage)) O << "Lllvm$workaround$fake$stub$" << CurrentFnName << ":\n"; +} - if (TAI->doesSupportDebugInformation() || - TAI->doesSupportExceptionHandling()) { - // Emit pre-function debug and/or EH information. - DW.BeginFunction(&MF); +/// runOnMachineFunction - This uses the printMachineInstruction() +/// method to print assembly for each instruction. +/// +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"; + + // Populate function information map. Actually, We don't want to populate + // non-stdcall or non-fastcall functions' information right now. + if (CC == CallingConv::X86_StdCall || CC == CallingConv::X86_FastCall) + FunctionInfoMap[F] = *MF.getInfo<X86MachineFunctionInfo>(); + + // Print out constants referenced by the function + EmitConstantPool(MF.getConstantPool()); + + if (F->hasDLLExportLinkage()) + DLLExportedFns.insert(Mang->makeNameProper(F->getName(), "")); + + // Print the 'header' of function + emitFunctionHeader(MF); + + // Emit pre-function debug and/or EH information. + if (TAI->doesSupportDebugInformation() || TAI->doesSupportExceptionHandling()) + DW.BeginFunction(&MF); + // Print out code for the function. bool hasAnyRealCode = false; for (MachineFunction::const_iterator I = MF.begin(), E = MF.end(); @@ -284,10 +289,9 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { if (TAI->hasDotTypeDotSizeDirective()) O << "\t.size\t" << CurrentFnName << ", .-" << CurrentFnName << "\n"; - if (TAI->doesSupportDebugInformation()) { - // Emit post-function debug information. + // Emit post-function debug information. + if (TAI->doesSupportDebugInformation()) DW.EndFunction(); - } // Print out jump tables referenced by the function. EmitJumpTableInfo(MF.getJumpTableInfo(), MF); |

