Move ownership of GCStrategy objects to LLVMContext
[oota-llvm.git] / include / llvm / CodeGen / GCMetadataPrinter.h
index 4a6b5ac19c36291f3a5490807e053bfa8cd86e64..6010cb8a4f3de00cbe34fae8ffcfefe92b2cbcfd 100644 (file)
@@ -21,7 +21,7 @@
 #define LLVM_CODEGEN_GCMETADATAPRINTER_H
 
 #include "llvm/CodeGen/GCMetadata.h"
-#include "llvm/CodeGen/GCStrategy.h"
+#include "llvm/IR/GCStrategy.h"
 #include "llvm/Support/Registry.h"
 
 namespace llvm {
@@ -32,16 +32,11 @@ namespace llvm {
   /// defaults from Registry.
   typedef Registry<GCMetadataPrinter> GCMetadataPrinterRegistry;
 
-  /// GCMetadataPrinter - Emits GC metadata as assembly code.
-  ///
+  /// GCMetadataPrinter - Emits GC metadata as assembly code.  Instances are
+  /// created, managed, and owned by the AsmPrinter.
   class GCMetadataPrinter {
-  public:
-    typedef GCStrategy::list_type list_type;
-    typedef GCStrategy::iterator iterator;
-
   private:
     GCStrategy *S;
-
     friend class AsmPrinter;
 
   protected:
@@ -55,16 +50,15 @@ namespace llvm {
 
   public:
     GCStrategy &getStrategy() { return *S; }
-    const Module &getModule() const { return S->getModule(); }
-
-    /// begin/end - Iterate over the collected function metadata.
-    iterator begin() { return S->begin(); }
-    iterator end()   { return S->end();   }
-
-    /// beginAssembly/finishAssembly - Emit module metadata as assembly code.
-    virtual void beginAssembly(AsmPrinter &AP);
 
-    virtual void finishAssembly(AsmPrinter &AP);
+    /// Called before the assembly for the module is generated by
+    /// the AsmPrinter (but after target specific hooks.)
+    virtual void beginAssembly(Module &M, GCModuleInfo &Info,
+                               AsmPrinter &AP) {}
+    /// Called after the assembly for the module is generated by
+    /// the AsmPrinter (but before target specific hooks)
+    virtual void finishAssembly(Module &M, GCModuleInfo &Info,
+                                AsmPrinter &AP) {}
 
     virtual ~GCMetadataPrinter();
   };