Add methods to TargetMachine to:
authorChris Lattner <sabre@nondot.org>
Sun, 3 Feb 2002 07:24:05 +0000 (07:24 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 3 Feb 2002 07:24:05 +0000 (07:24 +0000)
* Output assembly code a method at a time instead of building it all up then emitting it as a whole module
* Release memory contained in various annotations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1641 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachine.h

index 6effeedef58b0d942d82a5080a2fcb6db8a3d48b..1eb8cd27b43361f6ff1c3c66ec216f33fc6b3f64 100644 (file)
 #include "llvm/Target/TargetData.h"
 #include "Support/NonCopyable.h"
 
-class TargetMachine;
 class MachineInstrInfo;
 class MachineInstrDescriptor;
 class MachineSchedInfo;
 class MachineRegInfo;
 class MachineFrameInfo;
 class MachineCacheInfo;
-
-//---------------------------------------------------------------------------
-// Data types used to define information about a single machine instruction
-//---------------------------------------------------------------------------
-
-typedef int MachineOpCode;
-typedef int OpCodeMask;
-
+class Module;
+class Method;
 
 //---------------------------------------------------------------------------
 // class TargetMachine
@@ -86,7 +79,20 @@ public:
   // method. The specified method must have been compiled before this may be
   // used.
   //
+  virtual void emitAssembly(const Method *M, std::ostream &OutStr) const = 0;
+
+  //
+  // emitAssembly - Output assembly language code (a .s file) for global
+  // components of the specified module.  This assumes that methods have been
+  // previously output.
+  //
   virtual void emitAssembly(const Module *M, std::ostream &OutStr) const = 0;
+
+  //
+  // freeCompiledMethod - Release all memory associated with the compiled image
+  // for this method.
+  //
+  virtual void freeCompiledMethod(Method *M) = 0;
 };
 
 #endif