Broke out class definition from SparcV9CodeEmitter, and added ability to take a
MachineCodeEmitter to make a pass-through debugger -- output to memory and to
std::cerr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6363 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/SparcV9CodeEmitter.cpp b/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
index 4f77990..1985da2 100644
--- a/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
+++ b/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
@@ -3,37 +3,14 @@
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "SparcInternals.h"
-
-namespace {
- class SparcV9CodeEmitter : public MachineFunctionPass {
- MachineCodeEmitter &MCE;
-
- public:
- SparcV9CodeEmitter(MachineCodeEmitter &M) : MCE(M) {}
-
- bool runOnMachineFunction(MachineFunction &F);
-
- private:
- int64_t getMachineOpValue(MachineOperand &MO);
- unsigned getValueBit(int64_t Val, unsigned bit);
-
- void emitConstant(unsigned Val, unsigned Size);
-
- void emitBasicBlock(MachineBasicBlock &MBB);
- void emitInstruction(MachineInstr &MI);
-
- /// Function generated by the CodeEmitterGenerator using TableGen
- ///
- unsigned getBinaryCodeForInstr(MachineInstr &MI);
- };
-}
+#include "SparcV9CodeEmitter.h"
bool UltraSparc::addPassesToEmitMachineCode(PassManager &PM,
MachineCodeEmitter &MCE) {
//PM.add(new SparcV9CodeEmitter(MCE));
//MachineCodeEmitter *M = MachineCodeEmitter::createDebugMachineCodeEmitter();
MachineCodeEmitter *M =
- MachineCodeEmitter::createFilePrinterMachineCodeEmitter();
+ MachineCodeEmitter::createFilePrinterMachineCodeEmitter(MCE);
PM.add(new SparcV9CodeEmitter(*M));
return false;
}