LLVM
20.0.0git
lib
CodeGen
AsmPrinter
DwarfStringPool.h
Go to the documentation of this file.
1
//===- llvm/CodeGen/DwarfStringPool.h - Dwarf Debug Framework ---*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DWARFSTRINGPOOL_H
10
#define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFSTRINGPOOL_H
11
12
#include "
llvm/ADT/StringMap.h
"
13
#include "
llvm/ADT/StringRef.h
"
14
#include "
llvm/CodeGen/DwarfStringPoolEntry.h
"
15
#include "
llvm/Support/Allocator.h
"
16
17
namespace
llvm
{
18
19
class
AsmPrinter;
20
class
MCSection;
21
class
MCSymbol
;
22
23
// Collection of strings for this unit and assorted symbols.
24
// A String->Symbol mapping of strings used by indirect
25
// references.
26
class
DwarfStringPool
{
27
using
EntryTy
=
DwarfStringPoolEntry
;
28
29
StringMap<EntryTy, BumpPtrAllocator &>
Pool;
30
StringRef
Prefix;
31
uint64_t
NumBytes = 0;
32
unsigned
NumIndexedStrings = 0;
33
bool
ShouldCreateSymbols;
34
35
StringMapEntry<EntryTy>
&getEntryImpl(
AsmPrinter
&Asm,
StringRef
Str);
36
37
public
:
38
using
EntryRef
=
DwarfStringPoolEntryRef
;
39
40
DwarfStringPool
(
BumpPtrAllocator
&
A
,
AsmPrinter
&Asm,
StringRef
Prefix);
41
42
void
emitStringOffsetsTableHeader
(
AsmPrinter
&Asm,
MCSection
*OffsetSection,
43
MCSymbol
*StartSym);
44
45
void
emit
(
AsmPrinter
&Asm,
MCSection
*StrSection,
46
MCSection
*OffsetSection =
nullptr
,
47
bool
UseRelativeOffsets =
false
);
48
49
bool
empty
()
const
{
return
Pool.
empty
(); }
50
51
unsigned
size
()
const
{
return
Pool.
size
(); }
52
53
unsigned
getNumIndexedStrings
()
const
{
return
NumIndexedStrings; }
54
55
/// Get a reference to an entry in the string pool.
56
EntryRef
getEntry
(
AsmPrinter
&Asm,
StringRef
Str);
57
58
/// Same as getEntry, except that you can use EntryRef::getIndex to obtain a
59
/// unique ID of this entry (e.g., for use in indexed forms like
60
/// DW_FORM_strx).
61
EntryRef
getIndexedEntry
(
AsmPrinter
&Asm,
StringRef
Str);
62
};
63
64
}
// end namespace llvm
65
66
#endif
// LLVM_LIB_CODEGEN_ASMPRINTER_DWARFSTRINGPOOL_H
StringMap.h
This file defines the StringMap class.
Allocator.h
This file defines the BumpPtrAllocator interface.
A
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
emit
dxil metadata emit
Definition:
DXILTranslateMetadata.cpp:74
DwarfStringPoolEntry.h
StringRef.h
llvm::AsmPrinter
This class is intended to be used as a driving class for all asm writers.
Definition:
AsmPrinter.h:86
llvm::BumpPtrAllocatorImpl
Allocate memory in an ever growing pool, as if by bump-pointer.
Definition:
Allocator.h:66
llvm::DwarfStringPoolEntryRef
DwarfStringPoolEntryRef: Dwarf string pool entry reference.
Definition:
DwarfStringPoolEntry.h:49
llvm::DwarfStringPool
Definition:
DwarfStringPool.h:26
llvm::DwarfStringPool::getEntry
EntryRef getEntry(AsmPrinter &Asm, StringRef Str)
Get a reference to an entry in the string pool.
Definition:
DwarfStringPool.cpp:39
llvm::DwarfStringPool::getIndexedEntry
EntryRef getIndexedEntry(AsmPrinter &Asm, StringRef Str)
Same as getEntry, except that you can use EntryRef::getIndex to obtain a unique ID of this entry (e....
Definition:
DwarfStringPool.cpp:45
llvm::DwarfStringPool::EntryRef
DwarfStringPoolEntryRef EntryRef
Definition:
DwarfStringPool.h:38
llvm::DwarfStringPool::empty
bool empty() const
Definition:
DwarfStringPool.h:49
llvm::DwarfStringPool::getNumIndexedStrings
unsigned getNumIndexedStrings() const
Definition:
DwarfStringPool.h:53
llvm::DwarfStringPool::emitStringOffsetsTableHeader
void emitStringOffsetsTableHeader(AsmPrinter &Asm, MCSection *OffsetSection, MCSymbol *StartSym)
Definition:
DwarfStringPool.cpp:53
llvm::DwarfStringPool::size
unsigned size() const
Definition:
DwarfStringPool.h:51
llvm::MCSection
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Definition:
MCSection.h:36
llvm::MCSymbol
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition:
MCSymbol.h:41
llvm::StringMapEntry
StringMapEntry - This is used to represent one value that is inserted into a StringMap.
Definition:
StringMapEntry.h:102
llvm::StringMapImpl::size
unsigned size() const
Definition:
StringMap.h:104
llvm::StringMapImpl::empty
bool empty() const
Definition:
StringMap.h:103
llvm::StringMap
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
Definition:
StringMap.h:128
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:
StringRef.h:50
uint64_t
llvm::ISD::MCSymbol
@ MCSymbol
Definition:
ISDOpcodes.h:178
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::DwarfStringPoolEntry
Data for a string pool entry.
Definition:
DwarfStringPoolEntry.h:20
Generated on Mon Oct 7 2024 01:59:19 for LLVM by
1.9.6