LCOV - code coverage report
Current view: top level - lib/CodeGen/AsmPrinter - AddressPool.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 5 5 100.0 %
Date: 2017-09-14 15:23:50 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- llvm/CodeGen/AddressPool.h - Dwarf Debug Framework -------*- 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             : #ifndef LLVM_LIB_CODEGEN_ASMPRINTER_ADDRESSPOOL_H
      11             : #define LLVM_LIB_CODEGEN_ASMPRINTER_ADDRESSPOOL_H
      12             : 
      13             : #include "llvm/ADT/DenseMap.h"
      14             : 
      15             : namespace llvm {
      16             : 
      17             : class AsmPrinter;
      18             : class MCSection;
      19             : class MCSymbol;
      20             : 
      21             : // Collection of addresses for this unit and assorted labels.
      22             : // A Symbol->unsigned mapping of addresses used by indirect
      23             : // references.
      24       32756 : class AddressPool {
      25             :   struct AddressPoolEntry {
      26             :     unsigned Number;
      27             :     bool TLS;
      28             : 
      29          78 :     AddressPoolEntry(unsigned Number, bool TLS) : Number(Number), TLS(TLS) {}
      30             :   };
      31             :   DenseMap<const MCSymbol *, AddressPoolEntry> Pool;
      32             : 
      33             :   /// Record whether the AddressPool has been queried for an address index since
      34             :   /// the last "resetUsedFlag" call. Used to implement type unit fallback - a
      35             :   /// type that references addresses cannot be placed in a type unit when using
      36             :   /// fission.
      37             :   bool HasBeenUsed = false;
      38             : 
      39             : public:
      40       32948 :   AddressPool() = default;
      41             : 
      42             :   /// \brief Returns the index into the address pool with the given
      43             :   /// label/symbol.
      44             :   unsigned getIndex(const MCSymbol *Sym, bool TLS = false);
      45             : 
      46             :   void emit(AsmPrinter &Asm, MCSection *AddrSection);
      47             : 
      48          54 :   bool isEmpty() { return Pool.empty(); }
      49             : 
      50             :   bool hasBeenUsed() const { return HasBeenUsed; }
      51             : 
      52          36 :   void resetUsedFlag() { HasBeenUsed = false; }
      53             : };
      54             : 
      55             : } // end namespace llvm
      56             : 
      57             : #endif // LLVM_LIB_CODEGEN_ASMPRINTER_ADDRESSPOOL_H

Generated by: LCOV version 1.13