diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-03-14 01:41:15 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-03-14 01:41:15 +0000 |
| commit | e3330170d608053806e37c4dc953f15cf47b3388 (patch) | |
| tree | 0fa59fecf1480ead468d8c2208a8a95ae2e2e875 /lib/Target | |
| parent | 78fc70a5c56ba0be248622661c33edde74e4de3d (diff) | |
| download | external_llvm-e3330170d608053806e37c4dc953f15cf47b3388.zip external_llvm-e3330170d608053806e37c4dc953f15cf47b3388.tar.gz external_llvm-e3330170d608053806e37c4dc953f15cf47b3388.tar.bz2 | |
change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's. This cleans up and regularizes a bunch
of code and makes way for future progress.
Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places. This is very sad and disturbing. :(
One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction. There should not be any
functionality change from doing this, but I'm not an EH expert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
| -rw-r--r-- | lib/Target/ARM/ARMCodeEmitter.cpp | 6 | ||||
| -rw-r--r-- | lib/Target/PowerPC/PPCCodeEmitter.cpp | 6 | ||||
| -rw-r--r-- | lib/Target/X86/X86CodeEmitter.cpp | 7 |
3 files changed, 12 insertions, 7 deletions
diff --git a/lib/Target/ARM/ARMCodeEmitter.cpp b/lib/Target/ARM/ARMCodeEmitter.cpp index 5b5bd4f..f7e5e4e 100644 --- a/lib/Target/ARM/ARMCodeEmitter.cpp +++ b/lib/Target/ARM/ARMCodeEmitter.cpp @@ -51,6 +51,7 @@ namespace { const ARMSubtarget *Subtarget; TargetMachine &TM; JITCodeEmitter &MCE; + MachineModuleInfo *MMI; const std::vector<MachineConstantPoolEntry> *MCPEs; const std::vector<MachineJumpTableEntry> *MJTEs; bool IsPIC; @@ -182,7 +183,8 @@ bool ARMCodeEmitter::runOnMachineFunction(MachineFunction &MF) { if (MF.getJumpTableInfo()) MJTEs = &MF.getJumpTableInfo()->getJumpTables(); IsPIC = TM.getRelocationModel() == Reloc::PIC_; JTI->Initialize(MF, IsPIC); - MCE.setModuleInfo(&getAnalysis<MachineModuleInfo>()); + MMI = &getAnalysis<MachineModuleInfo>(); + MCE.setModuleInfo(MMI); do { DEBUG(errs() << "JITTing function '" @@ -563,7 +565,7 @@ void ARMCodeEmitter::emitPseudoInstruction(const MachineInstr &MI) { } case TargetOpcode::DBG_LABEL: case TargetOpcode::EH_LABEL: - MCE.emitLabel(MI.getOperand(0).getImm()); + MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm())); break; case TargetOpcode::IMPLICIT_DEF: case TargetOpcode::KILL: diff --git a/lib/Target/PowerPC/PPCCodeEmitter.cpp b/lib/Target/PowerPC/PPCCodeEmitter.cpp index 327470d..3d8daf7 100644 --- a/lib/Target/PowerPC/PPCCodeEmitter.cpp +++ b/lib/Target/PowerPC/PPCCodeEmitter.cpp @@ -30,6 +30,7 @@ namespace { class PPCCodeEmitter : public MachineFunctionPass { TargetMachine &TM; JITCodeEmitter &MCE; + MachineModuleInfo *MMI; void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<MachineModuleInfo>(); @@ -87,7 +88,8 @@ bool PPCCodeEmitter::runOnMachineFunction(MachineFunction &MF) { MF.getTarget().getRelocationModel() != Reloc::Static) && "JIT relocation model must be set to static or default!"); - MCE.setModuleInfo(&getAnalysis<MachineModuleInfo>()); + MMI = &getAnalysis<MachineModuleInfo>(); + MCE.setModuleInfo(MMI); do { MovePCtoLROffset = 0; MCE.startFunction(MF); @@ -110,7 +112,7 @@ void PPCCodeEmitter::emitBasicBlock(MachineBasicBlock &MBB) { break; case TargetOpcode::DBG_LABEL: case TargetOpcode::EH_LABEL: - MCE.emitLabel(MI.getOperand(0).getImm()); + MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm())); break; case TargetOpcode::IMPLICIT_DEF: case TargetOpcode::KILL: diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp index 8deadf6..2267752 100644 --- a/lib/Target/X86/X86CodeEmitter.cpp +++ b/lib/Target/X86/X86CodeEmitter.cpp @@ -46,6 +46,7 @@ namespace { const TargetData *TD; X86TargetMachine &TM; CodeEmitter &MCE; + MachineModuleInfo *MMI; intptr_t PICBaseOffset; bool Is64BitMode; bool IsPIC; @@ -115,8 +116,8 @@ FunctionPass *llvm::createX86JITCodeEmitterPass(X86TargetMachine &TM, template<class CodeEmitter> bool Emitter<CodeEmitter>::runOnMachineFunction(MachineFunction &MF) { - - MCE.setModuleInfo(&getAnalysis<MachineModuleInfo>()); + MMI = &getAnalysis<MachineModuleInfo>(); + MCE.setModuleInfo(MMI); II = TM.getInstrInfo(); TD = TM.getTargetData(); @@ -604,7 +605,7 @@ void Emitter<CodeEmitter>::emitInstruction(const MachineInstr &MI, case TargetOpcode::DBG_LABEL: case TargetOpcode::EH_LABEL: case TargetOpcode::GC_LABEL: - MCE.emitLabel(MI.getOperand(0).getImm()); + MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm())); break; case TargetOpcode::IMPLICIT_DEF: case TargetOpcode::KILL: |
