1274955Ssvnmir//===-- llvm/CodeGen/DwarfStringPool.h - Dwarf Debug Framework -*- C++ -*--===// 2274955Ssvnmir// 3274955Ssvnmir// The LLVM Compiler Infrastructure 4274955Ssvnmir// 5274955Ssvnmir// This file is distributed under the University of Illinois Open Source 6274955Ssvnmir// License. See LICENSE.TXT for details. 7274955Ssvnmir// 8274955Ssvnmir//===----------------------------------------------------------------------===// 9274955Ssvnmir 10280031Sdim#ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DWARFSTRINGPOOL_H 11280031Sdim#define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFSTRINGPOOL_H 12274955Ssvnmir 13274955Ssvnmir#include "llvm/ADT/StringMap.h" 14288943Sdim#include "llvm/CodeGen/DwarfStringPoolEntry.h" 15274955Ssvnmir#include "llvm/Support/Allocator.h" 16274955Ssvnmir#include <utility> 17274955Ssvnmir 18274955Ssvnmirnamespace llvm { 19274955Ssvnmir 20288943Sdimclass AsmPrinter; 21274955Ssvnmirclass MCSymbol; 22274955Ssvnmirclass MCSection; 23274955Ssvnmirclass StringRef; 24274955Ssvnmir 25274955Ssvnmir// Collection of strings for this unit and assorted symbols. 26274955Ssvnmir// A String->Symbol mapping of strings used by indirect 27274955Ssvnmir// references. 28274955Ssvnmirclass DwarfStringPool { 29288943Sdim typedef DwarfStringPoolEntry EntryTy; 30288943Sdim StringMap<EntryTy, BumpPtrAllocator &> Pool; 31274955Ssvnmir StringRef Prefix; 32288943Sdim unsigned NumBytes = 0; 33288943Sdim bool ShouldCreateSymbols; 34274955Ssvnmir 35274955Ssvnmirpublic: 36288943Sdim typedef DwarfStringPoolEntryRef EntryRef; 37274955Ssvnmir 38288943Sdim DwarfStringPool(BumpPtrAllocator &A, AsmPrinter &Asm, StringRef Prefix); 39274955Ssvnmir 40288943Sdim void emit(AsmPrinter &Asm, MCSection *StrSection, 41288943Sdim MCSection *OffsetSection = nullptr); 42274955Ssvnmir 43288943Sdim bool empty() const { return Pool.empty(); } 44274955Ssvnmir 45288943Sdim /// Get a reference to an entry in the string pool. 46288943Sdim EntryRef getEntry(AsmPrinter &Asm, StringRef Str); 47274955Ssvnmir}; 48274955Ssvnmir} 49274955Ssvnmir#endif 50