diff options
author | Alkis Evlogimenos <alkis@evlogimenos.com> | 2004-03-09 03:34:53 +0000 |
---|---|---|
committer | Alkis Evlogimenos <alkis@evlogimenos.com> | 2004-03-09 03:34:53 +0000 |
commit | 508b459d125ab415ef39d23ede48acdfb33b1b42 (patch) | |
tree | 6fdd0846cc7862f4716b9d1d74f4744ada92202c /llvm/lib/Target/X86/X86CodeEmitter.cpp | |
parent | a7c2da3af51f0f92e1b7b54b02e5242f64506b12 (diff) | |
download | bcm5719-llvm-508b459d125ab415ef39d23ede48acdfb33b1b42.tar.gz bcm5719-llvm-508b459d125ab415ef39d23ede48acdfb33b1b42.zip |
Add emitInstruction() API so that we can get the bytes of a simple instruction
llvm-svn: 12252
Diffstat (limited to 'llvm/lib/Target/X86/X86CodeEmitter.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86CodeEmitter.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp index 99e63eb3aac..29607daf447 100644 --- a/llvm/lib/Target/X86/X86CodeEmitter.cpp +++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp @@ -168,7 +168,6 @@ unsigned JITResolver::emitStubForFunction(Function *F) { } - namespace { class Emitter : public MachineFunctionPass { const X86InstrInfo *II; @@ -176,7 +175,9 @@ namespace { std::map<const BasicBlock*, unsigned> BasicBlockAddrs; std::vector<std::pair<const BasicBlock*, unsigned> > BBRefs; public: - Emitter(MachineCodeEmitter &mce) : II(0), MCE(mce) {} + explicit Emitter(MachineCodeEmitter &mce) : II(0), MCE(mce) {} + Emitter(MachineCodeEmitter &mce, const X86InstrInfo& ii) + : II(&ii), MCE(mce) {} bool runOnMachineFunction(MachineFunction &MF); @@ -184,9 +185,10 @@ namespace { return "X86 Machine Code Emitter"; } + void emitInstruction(const MachineInstr &MI); + private: void emitBasicBlock(const MachineBasicBlock &MBB); - void emitInstruction(const MachineInstr &MI); void emitPCRelativeBlockAddress(const BasicBlock *BB); void emitMaybePCRelativeValue(unsigned Address, bool isPCRelative); @@ -203,6 +205,14 @@ namespace { }; } +// This function is required by Printer.cpp to workaround gas bugs +void llvm::X86::emitInstruction(MachineCodeEmitter& mce, + const X86InstrInfo& ii, + const MachineInstr& mi) +{ + Emitter(mce, ii).emitInstruction(mi); +} + /// addPassesToEmitMachineCode - Add passes to the specified pass manager to get /// machine code emitted. This uses a MachineCodeEmitter object to handle /// actually outputting the machine code and resolving things like the address |