LCOV - code coverage report
Current view: top level - include/llvm/IR - Mangler.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 1 1 100.0 %
Date: 2018-10-20 13:21:21 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- llvm/IR/Mangler.h - Self-contained name mangler ---------*- 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             : // Unified name mangler for various backends.
      11             : //
      12             : //===----------------------------------------------------------------------===//
      13             : 
      14             : #ifndef LLVM_IR_MANGLER_H
      15             : #define LLVM_IR_MANGLER_H
      16             : 
      17             : #include "llvm/ADT/DenseMap.h"
      18             : #include "llvm/IR/GlobalValue.h"
      19             : 
      20             : namespace llvm {
      21             : 
      22             : class DataLayout;
      23             : template <typename T> class SmallVectorImpl;
      24             : class Triple;
      25             : class Twine;
      26             : class raw_ostream;
      27             : 
      28       53490 : class Mangler {
      29             :   /// We need to give global values the same name every time they are mangled.
      30             :   /// This keeps track of the number we give to anonymous ones.
      31             :   mutable DenseMap<const GlobalValue*, unsigned> AnonGlobalIDs;
      32             : 
      33             : public:
      34             :   /// Print the appropriate prefix and the specified global variable's name.
      35             :   /// If the global variable doesn't have a name, this fills in a unique name
      36             :   /// for the global.
      37             :   void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV,
      38             :                          bool CannotUsePrivateLabel) const;
      39             :   void getNameWithPrefix(SmallVectorImpl<char> &OutName, const GlobalValue *GV,
      40             :                          bool CannotUsePrivateLabel) const;
      41             : 
      42             :   /// Print the appropriate prefix and the specified name as the global variable
      43             :   /// name. GVName must not be empty.
      44             :   static void getNameWithPrefix(raw_ostream &OS, const Twine &GVName,
      45             :                                 const DataLayout &DL);
      46             :   static void getNameWithPrefix(SmallVectorImpl<char> &OutName,
      47             :                                 const Twine &GVName, const DataLayout &DL);
      48             : };
      49             : 
      50             : void emitLinkerFlagsForGlobalCOFF(raw_ostream &OS, const GlobalValue *GV,
      51             :                                   const Triple &TT, Mangler &Mangler);
      52             : 
      53             : void emitLinkerFlagsForUsedCOFF(raw_ostream &OS, const GlobalValue *GV,
      54             :                                 const Triple &T, Mangler &M);
      55             : 
      56             : } // End llvm namespace
      57             : 
      58             : #endif

Generated by: LCOV version 1.13