From 068190eb91b7b7f27213c05aa1882d65cf354bbf Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 5 Oct 2006 03:01:21 +0000 Subject: [PATCH] Pass the MachineFunction into EmitJumpTableInfo. llvm-svn: 30742 --- include/llvm/CodeGen/AsmPrinter.h | 2 +- lib/CodeGen/AsmPrinter.cpp | 3 ++- lib/Target/ARM/ARMAsmPrinter.cpp | 2 +- lib/Target/Alpha/AlphaAsmPrinter.cpp | 2 +- lib/Target/PowerPC/PPCAsmPrinter.cpp | 2 +- lib/Target/X86/X86ATTAsmPrinter.cpp | 9 +++++---- lib/Target/X86/X86IntelAsmPrinter.cpp | 3 +++ 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index 7c4d4eeb449..3632cc40714 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -161,7 +161,7 @@ namespace llvm { /// EmitJumpTableInfo - Print assembly representations of the jump tables /// used by the current function to the current output stream. /// - void EmitJumpTableInfo(MachineJumpTableInfo *MJTI); + void EmitJumpTableInfo(MachineJumpTableInfo *MJTI, MachineFunction &MF); /// EmitSpecialLLVMGlobal - Check to see if the specified global is a /// special global used by LLVM. If so, emit it and return true, otherwise diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index 247cceda7da..63d5f921820 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -183,7 +183,8 @@ void AsmPrinter::EmitConstantPool(unsigned Alignment, const char *Section, /// EmitJumpTableInfo - Print assembly representations of the jump tables used /// by the current function to the current output stream. /// -void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI) { +void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI, + MachineFunction &MF) { const std::vector &JT = MJTI->getJumpTables(); if (JT.empty()) return; const TargetData *TD = TM.getTargetData(); diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index 4c0d187c7bc..d0005a8dd2f 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -117,7 +117,7 @@ bool ARMAsmPrinter::runOnMachineFunction(MachineFunction &MF) { EmitConstantPool(MF.getConstantPool()); // Print out jump tables referenced by the function - EmitJumpTableInfo(MF.getJumpTableInfo()); + EmitJumpTableInfo(MF.getJumpTableInfo(), MF); // Print out labels for the function. const Function *F = MF.getFunction(); diff --git a/lib/Target/Alpha/AlphaAsmPrinter.cpp b/lib/Target/Alpha/AlphaAsmPrinter.cpp index 265f8ae4a21..3448f3c4739 100644 --- a/lib/Target/Alpha/AlphaAsmPrinter.cpp +++ b/lib/Target/Alpha/AlphaAsmPrinter.cpp @@ -162,7 +162,7 @@ bool AlphaAsmPrinter::runOnMachineFunction(MachineFunction &MF) { EmitConstantPool(MF.getConstantPool()); // Print out jump tables referenced by the function - EmitJumpTableInfo(MF.getJumpTableInfo()); + EmitJumpTableInfo(MF.getJumpTableInfo(), MF); // Print out labels for the function. const Function *F = MF.getFunction(); diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index b7e7f2878e4..bba9d75558f 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -475,7 +475,7 @@ bool DarwinAsmPrinter::runOnMachineFunction(MachineFunction &MF) { } // Print out jump tables referenced by the function. - EmitJumpTableInfo(MF.getJumpTableInfo()); + EmitJumpTableInfo(MF.getJumpTableInfo(), MF); // Emit post-function debug information. DW.EndFunction(); diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index 85ba0f40e61..eef95d935d1 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -126,10 +126,11 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { } } - // Print out jump tables referenced by the function - // Mac OS X requires at least one non-local (e.g. L1) labels before local - // lables that are used in jump table expressions (e.g. LBB1_1-LJT1_0). - EmitJumpTableInfo(MF.getJumpTableInfo()); + // Print out jump tables referenced by the function. + + // Mac OS X requires that the jump table follow the function, so that the jump + // table is part of the same atom that the function is in. + EmitJumpTableInfo(MF.getJumpTableInfo(), MF); if (TAI->hasDotTypeDotSizeDirective()) O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n"; diff --git a/lib/Target/X86/X86IntelAsmPrinter.cpp b/lib/Target/X86/X86IntelAsmPrinter.cpp index 4e833bdd3da..a7d1351e7a0 100755 --- a/lib/Target/X86/X86IntelAsmPrinter.cpp +++ b/lib/Target/X86/X86IntelAsmPrinter.cpp @@ -85,6 +85,9 @@ bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) { } } + // Print out jump tables referenced by the function. + EmitJumpTableInfo(MF.getJumpTableInfo(), MF); + O << CurrentFnName << "\tendp\n"; // We didn't modify anything.