Go to the documentation of this file.
15 if (
S.empty() && !Strings.
empty())
21 auto &Entry =
I.first->second;
22 if (
I.second || !Entry.isIndexed()) {
23 Entry.Index = NumEntries++;
24 Entry.Offset = CurrentEndOffset;
25 Entry.Symbol =
nullptr;
26 CurrentEndOffset +=
S.size() + 1;
37 auto InsertResult = Strings.
insert({
S, Entry});
38 return InsertResult.first->getKey();
41 std::vector<DwarfStringPoolEntryRef>
43 std::vector<DwarfStringPoolEntryRef> Result;
44 Result.reserve(Strings.
size());
45 for (
const auto &
E : Strings)
46 if (
E.getValue().isIndexed())
47 Result.emplace_back(
E,
true);
50 return A.getIndex() <
B.getIndex();
This is an optimization pass for GlobalISel generic memory operations.
String pool entry reference.
static constexpr unsigned NotIndexed
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
bool insert(MapEntryTy *KeyValue)
insert - Insert the specified key/value pair into the map.
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
std::vector< DwarfStringPoolEntryRef > getEntriesForEmission() const
Return the list of strings to be emitted.
StringRef internString(StringRef S)
Get permanent storage for S (but do not necessarily emit S in the output section).
DwarfStringPoolEntryRef getEntry(StringRef S)
Data for a string pool entry.
StringRef - Represent a constant reference to a string, i.e.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
void sort(IteratorTy Start, IteratorTy End)