bool DebugLocStream::finalizeList(AsmPrinter &Asm) { if (Lists.back().EntryOffset == Entries.size()) { // Empty list. Delete it. Lists.pop_back(); return false; } // Real list. Generate a label for it. Lists.back().Label = Asm.createTempSymbol("debug_loc"); return true; }
DwarfStringPool::EntryRef DwarfStringPool::getEntry(AsmPrinter &Asm, StringRef Str) { auto I = Pool.insert(std::make_pair(Str, EntryTy())); if (I.second) { auto &Entry = I.first->second; Entry.Index = Pool.size() - 1; Entry.Offset = NumBytes; Entry.Symbol = ShouldCreateSymbols ? Asm.createTempSymbol(Prefix) : nullptr; NumBytes += Str.size() + 1; assert(NumBytes > Entry.Offset && "Unexpected overflow"); } return EntryRef(*I.first); }