*** empty log message ***
authorVikram S. Adve <vadve@cs.uiuc.edu>
Mon, 16 Sep 2002 15:39:35 +0000 (15:39 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Mon, 16 Sep 2002 15:39:35 +0000 (15:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3741 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachine.h

index db3fc206a96d8ea1497a390a09c7d11fe5f66db9..1a2abff27a769cb7980799bbe3e5639013ed2ce5 100644 (file)
@@ -17,6 +17,7 @@ class MachineRegInfo;
 class MachineFrameInfo;
 class MachineCacheInfo;
 class PassManager;
+class Pass;
 
 //---------------------------------------------------------------------------
 // class TargetMachine
@@ -62,17 +63,35 @@ public:
   virtual const MachineFrameInfo&       getFrameInfo() const = 0;
   virtual const MachineCacheInfo&       getCacheInfo() const = 0;
   
-  //
   // Data storage information
   // 
   virtual unsigned int findOptimalStorageSize  (const Type* ty) const;
   
-  //
   // addPassesToEmitAssembly - Add passes to the specified pass manager to get
   // assembly langage code emited.  Typically this will involve several steps of
-  // code generation.
+  // code generation.  This provides a default ordering of passes that could
+  // be overridden for a particular target.
   //
-  virtual void addPassesToEmitAssembly(PassManager &PM, std::ostream &Out) = 0;
+  virtual void addPassesToEmitAssembly(PassManager &PM, std::ostream &Out);
+
+  // getPrologEpilogCodeInserter - Create pass to insert prolog/epilog code.
+  // 
+  virtual Pass* getPrologEpilogInsertionPass() = 0;
+
+  // getFunctionAsmPrinterPass - Create a pass to write out the generated
+  // machine code for a single function to the generated assembly file.
+  // 
+  virtual Pass* getFunctionAsmPrinterPass(std::ostream &Out) = 0;
+
+  // getModuleAsmPrinterPass - Create a pass to write out module-level
+  // information to the generated assembly file.
+  // 
+  virtual Pass* getModuleAsmPrinterPass(std::ostream &Out) = 0;
+
+  // getEmitBytecodeToAsmPass - Create a pass to emit the final LLVM bytecode
+  // to the generated assembly file.
+  // 
+  virtual Pass* getEmitBytecodeToAsmPass(std::ostream &Out) = 0;
 };
 
 #endif