detemplatize alpha code emission, it is now JIT specific.
authorChris Lattner <sabre@nondot.org>
Tue, 2 Feb 2010 21:35:47 +0000 (21:35 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 2 Feb 2010 21:35:47 +0000 (21:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95133 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Alpha/AlphaCodeEmitter.cpp

index ccce154afb385cd599a764cf597e47b3ce8731fb..1409e0c6443442a42fb488a38baa49a98ac0651f 100644 (file)
 using namespace llvm;
 
 namespace {
-
-  class AlphaCodeEmitter {
-    MachineCodeEmitter &MCE;
+  class AlphaCodeEmitter : public MachineFunctionPass {
+    JITCodeEmitter &MCE;
+    const AlphaInstrInfo *II;
   public:
-    AlphaCodeEmitter(MachineCodeEmitter &mce) : MCE(mce) {}
+    static char ID;
+
+    AlphaCodeEmitter(JITCodeEmitter &mce) : MachineFunctionPass(&ID),
+    MCE(mce) {}
 
     /// getBinaryCodeForInstr - This function, generated by the
     /// CodeEmitterGenerator using TableGen, produces the binary encoding for
@@ -44,36 +47,16 @@ namespace {
 
     unsigned getMachineOpValue(const MachineInstr &MI,
                                const MachineOperand &MO);
-  };
-
-  template <class CodeEmitter>
-  class Emitter : public MachineFunctionPass, public AlphaCodeEmitter
-  {
-    const AlphaInstrInfo  *II;
-    TargetMachine         &TM;
-    CodeEmitter           &MCE;
-
-  public:
-    static char ID;
-    explicit Emitter(TargetMachine &tm, CodeEmitter &mce)
-      : MachineFunctionPass(&ID), AlphaCodeEmitter(mce),
-        II(0), TM(tm), MCE(mce) {}
-    Emitter(TargetMachine &tm, CodeEmitter &mce, const AlphaInstrInfo& ii)
-      : MachineFunctionPass(&ID), AlphaCodeEmitter(mce),
-        II(&ii), TM(tm), MCE(mce) {}
-
+    
     bool runOnMachineFunction(MachineFunction &MF);
-
+    
     virtual const char *getPassName() const {
       return "Alpha Machine Code Emitter";
     }
-
+    
   private:
     void emitBasicBlock(MachineBasicBlock &MBB);
   };
-
-  template <class CodeEmitter>
-    char Emitter<CodeEmitter>::ID = 0;
 }
 
 /// createAlphaCodeEmitterPass - Return a pass that emits the collected Alpha
@@ -81,11 +64,10 @@ namespace {
 
 FunctionPass *llvm::createAlphaJITCodeEmitterPass(AlphaTargetMachine &TM,
                                                   JITCodeEmitter &JCE) {
-  return new Emitter<JITCodeEmitter>(TM, JCE);
+  return new AlphaCodeEmitter(JCE);
 }
 
-template <class CodeEmitter>
-bool Emitter<CodeEmitter>::runOnMachineFunction(MachineFunction &MF) {
+bool AlphaCodeEmitter::runOnMachineFunction(MachineFunction &MF) {
   II = ((AlphaTargetMachine&)MF.getTarget()).getInstrInfo();
 
   do {
@@ -97,8 +79,7 @@ bool Emitter<CodeEmitter>::runOnMachineFunction(MachineFunction &MF) {
   return false;
 }
 
-template <class CodeEmitter>
-void Emitter<CodeEmitter>::emitBasicBlock(MachineBasicBlock &MBB) {
+void AlphaCodeEmitter::emitBasicBlock(MachineBasicBlock &MBB) {
   MCE.StartMachineBasicBlock(&MBB);
   for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end();
        I != E; ++I) {