diff options
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfStringPool.h')
| -rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfStringPool.h | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/lib/CodeGen/AsmPrinter/DwarfStringPool.h b/lib/CodeGen/AsmPrinter/DwarfStringPool.h new file mode 100644 index 000000000000..c1615fb4a297 --- /dev/null +++ b/lib/CodeGen/AsmPrinter/DwarfStringPool.h @@ -0,0 +1,55 @@ +//===-- llvm/CodeGen/DwarfStringPool.h - Dwarf Debug Framework -*- C++ -*--===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef CODEGEN_ASMPRINTER_STRINGPOOL_H__ +#define CODEGEN_ASMPRINTER_STRINGPOOL_H__ + +#include "llvm/ADT/StringMap.h" +#include "llvm/CodeGen/AsmPrinter.h" +#include "llvm/Support/Allocator.h" + +#include <utility> + +namespace llvm { + +class MCSymbol; +class MCSection; +class StringRef; + +// Collection of strings for this unit and assorted symbols. +// A String->Symbol mapping of strings used by indirect +// references. +class DwarfStringPool { +  StringMap<std::pair<MCSymbol *, unsigned>, BumpPtrAllocator &> Pool; +  StringRef Prefix; +  MCSymbol *SectionSymbol; + +public: +  DwarfStringPool(BumpPtrAllocator &A, AsmPrinter &Asm, StringRef Prefix) +      : Pool(A), Prefix(Prefix), SectionSymbol(Asm.GetTempSymbol(Prefix)) {} + +  void emit(AsmPrinter &Asm, const MCSection *StrSection, +            const MCSection *OffsetSection = nullptr, +            const MCSymbol *StrSecSym = nullptr); + +  /// \brief Returns the entry into the start of the pool. +  MCSymbol *getSectionSymbol(); + +  /// \brief Returns an entry into the string pool with the given +  /// string text. +  MCSymbol *getSymbol(AsmPrinter &Asm, StringRef Str); + +  /// \brief Returns the index into the string pool with the given +  /// string text. +  unsigned getIndex(AsmPrinter &Asm, StringRef Str); + +  bool empty() const { return Pool.empty(); } +}; +} +#endif | 
