Convert backend to use passes, implement X86TargetMachine
[oota-llvm.git] / lib / Target / X86 / X86AsmPrinter.cpp
index 1a42ed86f84058ca9bc73f4b3deef859c2cea7b4..b320e2c17886c4c6dbdbd7740beff9426748ff80 100644 (file)
@@ -6,16 +6,37 @@
 //===----------------------------------------------------------------------===//
 
 #include "X86.h"
+#include "llvm/Pass.h"
+#include "llvm/CodeGen/MachineFunction.h"
 #include <iostream>
 
-/// X86PrintCode - Print out the specified machine code function to the
-/// specified stream.  This function should work regardless of whether or not
-/// the function is in SSA form or not, although when in SSA form, we obviously
-/// don't care about being consumable by an assembler.
-///
-void X86PrintCode(const MachineFunction *MF, std::ostream &O) {
+namespace {
+  struct Printer : public FunctionPass {
+    TargetMachine &TM;
+    std::ostream &O;
+
+    Printer(TargetMachine &tm, std::ostream &o) : TM(tm), O(o) {}
+
+    bool runOnFunction(Function &F);
+  };
+}
+
+bool Printer::runOnFunction(Function &F) {
+  MachineFunction &MF = MachineFunction::get(&F);
   O << "x86 printing not implemented yet!\n";
+  
+  // This should use the X86InstructionInfo::print method to print assembly
+  // for each instruction
+  return false;
+}
+
+
 
-  // This should use the X86InstructionInfo::print method to print assembly for
-  // each instruction
+
+/// createX86CodePrinterPass - Print out the specified machine code function to
+/// the specified stream.  This function should work regardless of whether or
+/// not the function is in SSA form or not.
+///
+Pass *createX86CodePrinterPass(TargetMachine &TM, std::ostream &O) {
+  return new Printer(TM, O);
 }