LCOV - code coverage report
Current view: top level - include/llvm/CodeGen - GCMetadataPrinter.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 2 4 50.0 %
Date: 2018-10-20 13:21:21 Functions: 3 6 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- llvm/CodeGen/GCMetadataPrinter.h - Prints asm GC tables --*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : //
      10             : // The abstract base class GCMetadataPrinter supports writing GC metadata tables
      11             : // as assembly code. This is a separate class from GCStrategy in order to allow
      12             : // users of the LLVM JIT to avoid linking with the AsmWriter.
      13             : //
      14             : // Subclasses of GCMetadataPrinter must be registered using the
      15             : // GCMetadataPrinterRegistry. This is separate from the GCStrategy itself
      16             : // because these subclasses are logically plugins for the AsmWriter.
      17             : //
      18             : //===----------------------------------------------------------------------===//
      19             : 
      20             : #ifndef LLVM_CODEGEN_GCMETADATAPRINTER_H
      21             : #define LLVM_CODEGEN_GCMETADATAPRINTER_H
      22             : 
      23             : #include "llvm/Support/Registry.h"
      24             : 
      25             : namespace llvm {
      26             : 
      27             : class AsmPrinter;
      28             : class GCMetadataPrinter;
      29             : class GCModuleInfo;
      30             : class GCStrategy;
      31             : class Module;
      32             : 
      33             : /// GCMetadataPrinterRegistry - The GC assembly printer registry uses all the
      34             : /// defaults from Registry.
      35             : using GCMetadataPrinterRegistry = Registry<GCMetadataPrinter>;
      36             : 
      37             : /// GCMetadataPrinter - Emits GC metadata as assembly code.  Instances are
      38             : /// created, managed, and owned by the AsmPrinter.
      39          12 : class GCMetadataPrinter {
      40             : private:
      41             :   friend class AsmPrinter;
      42             : 
      43             :   GCStrategy *S;
      44             : 
      45             : protected:
      46             :   // May only be subclassed.
      47             :   GCMetadataPrinter();
      48             : 
      49             : public:
      50             :   GCMetadataPrinter(const GCMetadataPrinter &) = delete;
      51             :   GCMetadataPrinter &operator=(const GCMetadataPrinter &) = delete;
      52             :   virtual ~GCMetadataPrinter();
      53             : 
      54           0 :   GCStrategy &getStrategy() { return *S; }
      55             : 
      56             :   /// Called before the assembly for the module is generated by
      57             :   /// the AsmPrinter (but after target specific hooks.)
      58           3 :   virtual void beginAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {}
      59             : 
      60             :   /// Called after the assembly for the module is generated by
      61             :   /// the AsmPrinter (but before target specific hooks)
      62           0 :   virtual void finishAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {}
      63             : };
      64             : 
      65             : } // end namespace llvm
      66             : 
      67             : #endif // LLVM_CODEGEN_GCMETADATAPRINTER_H

Generated by: LCOV version 1.13