DwarfStringPool.h revision 302408
1//===-- llvm/CodeGen/DwarfStringPool.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_DWARFSTRINGPOOL_H 11#define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFSTRINGPOOL_H 12 13#include "llvm/ADT/StringMap.h" 14#include "llvm/CodeGen/DwarfStringPoolEntry.h" 15#include "llvm/Support/Allocator.h" 16#include <utility> 17 18namespace llvm { 19 20class AsmPrinter; 21class MCSymbol; 22class MCSection; 23class StringRef; 24 25// Collection of strings for this unit and assorted symbols. 26// A String->Symbol mapping of strings used by indirect 27// references. 28class DwarfStringPool { 29 typedef DwarfStringPoolEntry EntryTy; 30 StringMap<EntryTy, BumpPtrAllocator &> Pool; 31 StringRef Prefix; 32 unsigned NumBytes = 0; 33 bool ShouldCreateSymbols; 34 35public: 36 typedef DwarfStringPoolEntryRef EntryRef; 37 38 DwarfStringPool(BumpPtrAllocator &A, AsmPrinter &Asm, StringRef Prefix); 39 40 void emit(AsmPrinter &Asm, MCSection *StrSection, 41 MCSection *OffsetSection = nullptr); 42 43 bool empty() const { return Pool.empty(); } 44 45 /// Get a reference to an entry in the string pool. 46 EntryRef getEntry(AsmPrinter &Asm, StringRef Str); 47}; 48} 49#endif 50