LLVM
10.0.0svn
|
#include "DwarfDebug.h"
#include "ByteStreamer.h"
#include "DIEHash.h"
#include "DebugLocEntry.h"
#include "DebugLocStream.h"
#include "DwarfCompileUnit.h"
#include "DwarfExpression.h"
#include "DwarfFile.h"
#include "DwarfUnit.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/Triple.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/CodeGen/AccelTable.h"
#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/CodeGen/DIE.h"
#include "llvm/CodeGen/LexicalScopes.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/DebugInfo/DWARF/DWARFExpression.h"
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Module.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDwarf.h"
#include "llvm/MC/MCSection.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/MC/MachineLocation.h"
#include "llvm/MC/SectionKind.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MD5.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Timer.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <string>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
struct | ArangeSpan |
Macros | |
#define | DEBUG_TYPE "dwarfdebug" |
Enumerations | |
enum | DefaultOnOff { Default, Enable, Disable, Default, Enable, Disable } |
enum | LinkageNameOption { DefaultLinkageNames, AllLinkageNames, AbstractLinkageNames } |
Functions | |
STATISTIC (NumCSParams, "Number of dbg call site params created") | |
static DbgValueLoc | getDebugLocValue (const MachineInstr *MI) |
Get .debug_loc entry for the instruction range starting at MI. More... | |
static AccelTableKind | computeAccelTableKind (unsigned DwarfVersion, bool GenerateTypeUnits, DebuggerKind Tuning, const Triple &TT) |
static bool | isObjCClass (StringRef Name) |
static bool | hasObjCCategory (StringRef Name) |
static void | getObjCClassCategory (StringRef In, StringRef &Class, StringRef &Category) |
static StringRef | getObjCMethodName (StringRef In) |
template<typename Func > | |
static void | forBothCUs (DwarfCompileUnit &CU, Func F) |
static void | collectCallSiteParameters (const MachineInstr *CallMI, ParamSet &Params) |
Try to interpret values loaded into registers that forward parameters for CallMI . More... | |
static SmallVectorImpl< DwarfCompileUnit::GlobalExpr > & | sortGlobalExprs (SmallVectorImpl< DwarfCompileUnit::GlobalExpr > &GVEs) |
Sort and unique GVEs by comparing their fragment offset. More... | |
static bool | validThroughout (LexicalScopes &LScopes, const MachineInstr *DbgValue, const MachineInstr *RangeEnd) |
Determine whether a singular DBG_VALUE is valid for the entirety of its enclosing lexical scope. More... | |
static DebugLoc | findPrologueEndLoc (const MachineFunction *MF) |
static void | recordSourceLine (AsmPrinter &Asm, unsigned Line, unsigned Col, const MDNode *S, unsigned Flags, unsigned CUID, uint16_t DwarfVersion, ArrayRef< std::unique_ptr< DwarfCompileUnit >> DCUs) |
Register a source line with debug info. More... | |
static dwarf::PubIndexEntryDescriptor | computeIndexValue (DwarfUnit *CU, const DIE *Die) |
computeIndexValue - Compute the gdb index value for the DIE and CU. More... | |
static void | emitListsTableHeaderStart (AsmPrinter *Asm, MCSymbol *TableStart, MCSymbol *TableEnd) |
static MCSymbol * | emitRnglistsTableHeader (AsmPrinter *Asm, const DwarfFile &Holder) |
static MCSymbol * | emitLoclistsTableHeader (AsmPrinter *Asm, const DwarfDebug &DD) |
template<typename Ranges , typename PayloadEmitter > | |
static void | emitRangeList (DwarfDebug &DD, AsmPrinter *Asm, MCSymbol *Sym, const Ranges &R, const DwarfCompileUnit &CU, unsigned BaseAddressx, unsigned OffsetPair, unsigned StartxLength, unsigned EndOfList, StringRef(*StringifyEnum)(unsigned), bool ShouldUseBaseAddress, PayloadEmitter EmitPayload) |
static void | emitLocList (DwarfDebug &DD, AsmPrinter *Asm, const DebugLocStream::List &List) |
static void | emitRangeList (DwarfDebug &DD, AsmPrinter *Asm, const RangeSpanList &List) |
Emit a single range list. We handle both DWARF v5 and earlier. More... | |
static void | emitDebugRangesImpl (DwarfDebug &DD, AsmPrinter *Asm, const DwarfFile &Holder, MCSymbol *TableEnd) |
Variables | |
static cl::opt< bool > | DisableDebugInfoPrinting ("disable-debug-info-print", cl::Hidden, cl::desc("Disable debug info printing")) |
static cl::opt< bool > | UseDwarfRangesBaseAddressSpecifier ("use-dwarf-ranges-base-address-specifier", cl::Hidden, cl::desc("Use base address specifiers in debug_ranges"), cl::init(false)) |
static cl::opt< bool > | GenerateARangeSection ("generate-arange-section", cl::Hidden, cl::desc("Generate dwarf aranges"), cl::init(false)) |
static cl::opt< bool > | GenerateDwarfTypeUnits ("generate-type-units", cl::Hidden, cl::desc("Generate DWARF4 type units."), cl::init(false)) |
static cl::opt< bool > | SplitDwarfCrossCuReferences ("split-dwarf-cross-cu-references", cl::Hidden, cl::desc("Enable cross-cu references in DWO files"), cl::init(false)) |
static cl::opt< DefaultOnOff > | UnknownLocations ("use-unknown-locations", cl::Hidden, cl::desc("Make an absence of debug location information explicit."), cl::values(clEnumVal(Default, "At top of block or after label"), clEnumVal(Enable, "In all cases"), clEnumVal(Disable, "Never")), cl::init(Default)) |
static cl::opt< AccelTableKind > | AccelTables ("accel-tables", cl::Hidden, cl::desc("Output dwarf accelerator tables."), cl::values(clEnumValN(AccelTableKind::Default, "Default", "Default for platform"), clEnumValN(AccelTableKind::None, "Disable", "Disabled."), clEnumValN(AccelTableKind::Apple, "Apple", "Apple"), clEnumValN(AccelTableKind::Dwarf, "Dwarf", "DWARF")), cl::init(AccelTableKind::Default)) |
static cl::opt< DefaultOnOff > | DwarfInlinedStrings ("dwarf-inlined-strings", cl::Hidden, cl::desc("Use inlined strings rather than string section."), cl::values(clEnumVal(Default, "Default for platform"), clEnumVal(Enable, "Enabled"), clEnumVal(Disable, "Disabled")), cl::init(Default)) |
static cl::opt< bool > | NoDwarfRangesSection ("no-dwarf-ranges-section", cl::Hidden, cl::desc("Disable emission .debug_ranges section."), cl::init(false)) |
static cl::opt< DefaultOnOff > | DwarfSectionsAsReferences ("dwarf-sections-as-references", cl::Hidden, cl::desc("Use sections+offset as references rather than labels."), cl::values(clEnumVal(Default, "Default for platform"), clEnumVal(Enable, "Enabled"), clEnumVal(Disable, "Disabled")), cl::init(Default)) |
static cl::opt< LinkageNameOption > | DwarfLinkageNames ("dwarf-linkage-names", cl::Hidden, cl::desc("Which DWARF linkage-name attributes to emit."), cl::values(clEnumValN(DefaultLinkageNames, "Default", "Default for platform"), clEnumValN(AllLinkageNames, "All", "All"), clEnumValN(AbstractLinkageNames, "Abstract", "Abstract subprograms")), cl::init(DefaultLinkageNames)) |
static const char *const | DWARFGroupName = "dwarf" |
static const char *const | DWARFGroupDescription = "DWARF Emission" |
static const char *const | DbgTimerName = "writer" |
static const char *const | DbgTimerDescription = "DWARF Debug Writer" |
static constexpr unsigned | ULEB128PadSize = 4 |
#define DEBUG_TYPE "dwarfdebug" |
Definition at line 86 of file DwarfDebug.cpp.
enum DefaultOnOff |
Enumerator | |
---|---|
Default | |
Enable | |
Disable | |
Default | |
Enable | |
Disable |
Definition at line 112 of file DwarfDebug.cpp.
enum LinkageNameOption |
Enumerator | |
---|---|
DefaultLinkageNames | |
AllLinkageNames | |
AbstractLinkageNames |
Definition at line 150 of file DwarfDebug.cpp.
|
static |
Try to interpret values loaded into registers that forward parameters for CallMI
.
Store parameters with interpreted value into Params
.
Definition at line 540 of file DwarfDebug.cpp.
References llvm::DIE::addChild(), llvm::DwarfUnit::addFlag(), llvm::DwarfUnit::addString(), llvm::DwarfUnit::addStringOffsetsStart(), llvm::DwarfUnit::addUInt(), llvm::DwarfFile::addUnit(), llvm::DebugHandlerBase::Asm, assert(), llvm::DwarfCompileUnit::constructCallSiteEntryDIE(), llvm::DwarfCompileUnit::constructCallSiteParmEntryDIEs(), llvm::DwarfCompileUnit::constructImportedEntityDIE(), D, llvm::dbgs(), llvm::dwarf::DW_OP_LLVM_entry_value, llvm::dyn_cast(), llvm::SmallVectorBase::empty(), llvm::StringRef::empty(), llvm::TargetOptions::EnableDebugEntryValues, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::MDNode::get(), llvm::MachineFunction::getCallSitesInfo(), llvm::DIScope::getDirectory(), llvm::DwarfCompileUnit::getDwarf5OrGNUAttr(), llvm::DwarfDebug::getDwarfVersion(), llvm::DICompileUnit::getDWOId(), llvm::DIScope::getFile(), llvm::DIScope::getFilename(), llvm::DICompileUnit::getFlags(), llvm::TargetRegisterInfo::getFrameRegister(), llvm::DebugHandlerBase::getFunctionLocalOffsetAfterInsn(), llvm::MachineOperand::getGlobal(), llvm::DICompileUnit::getImportedEntities(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::DebugHandlerBase::getLabelAfterInsn(), llvm::MachineInstr::getMF(), llvm::Value::getName(), llvm::DwarfUnit::getOrCreateContextDIE(), llvm::MachineInstr::getParent(), llvm::DICompileUnit::getProducer(), llvm::MachineOperand::getReg(), llvm::DICompileUnit::getRetainedTypes(), llvm::ilist_node_impl< OptionsT >::getReverseIterator(), llvm::DICompileUnit::getRuntimeVersion(), llvm::DIImportedEntity::getScope(), llvm::DIScope::getSource(), llvm::DICompileUnit::getSourceLanguage(), llvm::DICompileUnit::getSplitDebugFilename(), llvm::Function::getSubprogram(), llvm::MachineFunction::getSubtarget(), llvm::DIEUnit::getUnitDie(), llvm::DwarfFile::getUnits(), llvm::DwarfCompileUnit::hasDwarfPubSections(), I, llvm::ARM_PROC::IE, llvm::RegState::Implicit, llvm::DwarfCompileUnit::initStmtList(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::TargetRegisterInfo::isCalleeSavedPhysReg(), llvm::MachineInstr::isDebugInstr(), llvm::MachineOperand::isGlobal(), llvm::DICompileUnit::isOptimized(), llvm::Register::isPhysicalRegister(), llvm::MachineOperand::isReg(), llvm::TargetInstrInfo::isTailCall(), LLVM_DEBUG, MI, N, llvm::MachineInstr::operands(), llvm::TargetMachine::Options, llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::TargetRegisterInfo::regsOverlap(), llvm::StringRef::str(), TII, llvm::AsmPrinter::TM, llvm::DwarfDebug::tuneForGDB(), llvm::DwarfDebug::tuneForLLDB(), llvm::DwarfDebug::useAppleExtensionAttributes(), llvm::DwarfDebug::useSegmentedStringOffsetsTable(), and llvm::DwarfDebug::useSplitDwarf().
|
static |
Definition at line 320 of file DwarfDebug.cpp.
References AccelTables, llvm::Apple, llvm::Default, llvm::Dwarf, llvm::Triple::isOSBinFormatMachO(), llvm::LLDB, and llvm::None.
Referenced by llvm::DwarfDebug::DwarfDebug().
|
static |
computeIndexValue - Compute the gdb index value for the DIE and CU.
Definition at line 1988 of file DwarfDebug.cpp.
References llvm::DebugHandlerBase::Asm, llvm::AsmPrinter::createTempSymbol(), llvm::dwarf::DW_PUBNAMES_VERSION, llvm::AsmPrinter::EmitDwarfOffset(), llvm::AsmPrinter::emitDwarfSymbolReference(), llvm::AsmPrinter::emitInt16(), llvm::AsmPrinter::emitInt32(), llvm::AsmPrinter::emitInt8(), llvm::AsmPrinter::EmitLabelDifference(), llvm::DwarfFile::emitStrings(), llvm::DIE::findAttribute(), llvm::dwarf::GDBIndexEntryKindString(), llvm::dwarf::GDBIndexEntryLinkageString(), llvm::MCSection::getBeginSymbol(), llvm::DwarfUnit::getCUNode(), llvm::DIEUnit::getDebugSectionOffset(), llvm::MCObjectFileInfo::getDwarfGnuPubNamesSection(), llvm::MCObjectFileInfo::getDwarfGnuPubTypesSection(), llvm::MCObjectFileInfo::getDwarfPubNamesSection(), llvm::MCObjectFileInfo::getDwarfPubTypesSection(), llvm::MCObjectFileInfo::getDwarfStrOffSection(), llvm::MCObjectFileInfo::getDwarfStrSection(), llvm::DwarfCompileUnit::getGlobalNames(), llvm::DwarfCompileUnit::getGlobalTypes(), llvm::DwarfCompileUnit::getLabelBegin(), llvm::DwarfUnit::getLanguage(), llvm::DwarfCompileUnit::getLength(), llvm::DICompileUnit::getNameTableKind(), llvm::AsmPrinter::getObjFileLowering(), llvm::DIE::getOffset(), llvm::DIEUnit::getSection(), llvm::DwarfCompileUnit::getSkeleton(), llvm::DIE::getTag(), llvm::dwarf::GIEK_FUNCTION, llvm::dwarf::GIEK_NONE, llvm::dwarf::GIEK_TYPE, llvm::dwarf::GIEK_VARIABLE, llvm::dwarf::GIEL_EXTERNAL, llvm::dwarf::GIEL_STATIC, llvm::DICompileUnit::GNU, llvm::DwarfCompileUnit::hasDwarfPubSections(), llvm::dwarf::isCPlusPlus(), llvm::dwarf::PubIndexEntryDescriptor::Kind, llvm::dwarf::PubIndexEntryDescriptor::Linkage, Name, llvm::AsmPrinter::OutStreamer, llvm::dwarf::PubIndexEntryDescriptor::toBits(), llvm::DwarfDebug::useSectionsAsReferences(), llvm::DwarfDebug::useSegmentedStringOffsetsTable(), and llvm::DwarfDebug::useSplitDwarf().
|
static |
Definition at line 2651 of file DwarfDebug.cpp.
References llvm::all_of(), llvm::DebugHandlerBase::Asm, assert(), llvm::dwarf::DW_MACINFO_end_file, llvm::dwarf::DW_MACINFO_start_file, llvm::AsmPrinter::emitInt8(), emitRangeList(), emitRnglistsTableHeader(), llvm::AsmPrinter::EmitULEB128(), llvm::StringRef::empty(), F(), llvm::DwarfUnit::getCUNode(), llvm::DIScope::getDirectory(), llvm::MCObjectFileInfo::getDwarfAbbrevDWOSection(), llvm::MCObjectFileInfo::getDwarfAddrSection(), llvm::MCObjectFileInfo::getDwarfInfoSection(), llvm::MCObjectFileInfo::getDwarfLineDWOSection(), llvm::MCObjectFileInfo::getDwarfMacinfoSection(), llvm::MCObjectFileInfo::getDwarfRangesSection(), llvm::MCObjectFileInfo::getDwarfRnglistsDWOSection(), llvm::MCObjectFileInfo::getDwarfRnglistsSection(), llvm::MCObjectFileInfo::getDwarfStrDWOSection(), llvm::MCObjectFileInfo::getDwarfStrOffDWOSection(), llvm::DwarfDebug::getDwarfVersion(), llvm::DIMacroFile::getElements(), llvm::DIScope::getFile(), llvm::DIMacroFile::getFile(), llvm::DIScope::getFilename(), llvm::DIMacro::getLine(), llvm::DIMacroFile::getLine(), llvm::DIMacroNode::getMacinfoType(), llvm::DwarfCompileUnit::getMacroLabelBegin(), llvm::DwarfUnit::getMD5AsBytes(), llvm::DIMacro::getName(), llvm::AsmPrinter::getObjFileLowering(), llvm::DwarfCompileUnit::getOrCreateSourceID(), llvm::DwarfFile::getRangeLists(), llvm::DwarfCompileUnit::getSkeleton(), llvm::DIScope::getSource(), llvm::DwarfCompileUnit::getUniqueID(), llvm::DIEUnit::getUnitDie(), llvm::DIMacro::getValue(), llvm::DICompileUnit::isDebugDirectivesOnly(), List, llvm_unreachable, llvm::none_of(), llvm::AsmPrinter::OutStreamer, P, llvm::DIEUnit::setSection(), llvm::DwarfDebug::useRangesSection(), llvm::DwarfDebug::useSegmentedStringOffsetsTable(), and llvm::DwarfDebug::useSplitDwarf().
|
static |
Definition at line 2267 of file DwarfDebug.cpp.
References llvm::AsmPrinter::emitInt16(), llvm::AsmPrinter::emitInt8(), llvm::AsmPrinter::EmitLabelDifference(), llvm::MCAsmInfo::getCodePointerSize(), llvm::AsmPrinter::MAI, and llvm::AsmPrinter::OutStreamer.
Referenced by emitLoclistsTableHeader(), and emitRnglistsTableHeader().
|
static |
Definition at line 2421 of file DwarfDebug.cpp.
References llvm::DebugLocStream::List::CU, E, llvm::DwarfDebug::emitDebugLocEntryLocation(), llvm::AsmPrinter::emitInt8(), llvm::AsmPrinter::EmitLabelDifference(), emitLoclistsTableHeader(), emitRangeList(), llvm::AsmPrinter::EmitULEB128(), llvm::Entry::End, llvm::DwarfDebug::getDebugLocs(), llvm::MCObjectFileInfo::getDwarfLocDWOSection(), llvm::MCObjectFileInfo::getDwarfLoclistsSection(), llvm::MCObjectFileInfo::getDwarfLocSection(), llvm::DwarfDebug::getDwarfVersion(), llvm::DebugLocStream::getEntries(), llvm::AddressPool::getIndex(), llvm::DebugLocStream::getLists(), llvm::AsmPrinter::getObjFileLowering(), llvm::DebugLocStream::List::Label, List, llvm::dwarf::LocListEncodingString(), and llvm::AsmPrinter::OutStreamer.
|
static |
Definition at line 2308 of file DwarfDebug.cpp.
References llvm::AsmPrinter::createTempSymbol(), llvm::AsmPrinter::emitInt32(), emitListsTableHeaderStart(), llvm::DwarfDebug::getDebugLocs(), llvm::DebugLocStream::getSym(), and llvm::AsmPrinter::OutStreamer.
Referenced by emitLocList().
|
static |
Definition at line 2326 of file DwarfDebug.cpp.
References assert(), llvm::AsmPrinter::emitInt8(), llvm::AsmPrinter::EmitULEB128(), llvm::DwarfDebug::getAddressPool(), llvm::DwarfCompileUnit::getBaseAddress(), llvm::MCAsmInfo::getCodePointerSize(), llvm::DwarfDebug::getDwarfVersion(), llvm::AddressPool::getIndex(), llvm::MCSymbol::getSection(), llvm::DwarfDebug::getSectionLabel(), llvm::AsmPrinter::MAI, llvm::AsmPrinter::OutStreamer, P, and Size.
Referenced by emitDebugRangesImpl(), emitLocList(), and emitRangeList().
|
static |
Emit a single range list. We handle both DWARF v5 and earlier.
Definition at line 2640 of file DwarfDebug.cpp.
References emitRangeList(), llvm::RangeSpanList::getCU(), llvm::DwarfUnit::getCUNode(), llvm::DwarfDebug::getDwarfVersion(), llvm::RangeSpanList::getRanges(), llvm::DICompileUnit::getRangesBaseAddress(), llvm::RangeSpanList::getSym(), and llvm::dwarf::RangeListEncodingString().
|
static |
Definition at line 2288 of file DwarfDebug.cpp.
References llvm::AsmPrinter::createTempSymbol(), llvm::AsmPrinter::emitInt32(), llvm::AsmPrinter::EmitLabelDifference(), emitListsTableHeaderStart(), llvm::DwarfFile::getRangeLists(), llvm::DwarfFile::getRnglistsTableBaseSym(), List, and llvm::AsmPrinter::OutStreamer.
Referenced by emitDebugRangesImpl().
|
static |
Definition at line 1726 of file DwarfDebug.cpp.
References llvm::MachineInstr::FrameSetup, and MI.
Referenced by llvm::DwarfDebug::emitInitialLocDirective().
|
static |
Definition at line 502 of file DwarfDebug.cpp.
References F(), llvm::DwarfUnit::getCUNode(), llvm::DwarfCompileUnit::getSkeleton(), and llvm::DICompileUnit::getSplitDebugInlining().
Referenced by llvm::DwarfDebug::beginModule().
|
static |
Get .debug_loc entry for the instruction range starting at MI.
Definition at line 232 of file DwarfDebug.cpp.
References assert(), llvm::MachineOperand::getCImm(), llvm::MachineInstr::getDebugExpression(), llvm::MachineOperand::getFPImm(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isCImm(), llvm::MachineOperand::isFPImm(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), and llvm_unreachable.
Referenced by llvm::DbgVariable::initializeDbgValue(), and validThroughout().
Definition at line 434 of file DwarfDebug.cpp.
References llvm::StringRef::find(), hasObjCCategory(), and llvm::StringRef::slice().
Referenced by llvm::DwarfDebug::addSubprogramNames().
Definition at line 446 of file DwarfDebug.cpp.
References llvm::StringRef::find(), and llvm::StringRef::slice().
Referenced by llvm::DwarfDebug::addSubprogramNames().
Definition at line 427 of file DwarfDebug.cpp.
References llvm::StringRef::find(), isObjCClass(), and llvm::StringRef::npos.
Referenced by getObjCClassCategory().
Definition at line 423 of file DwarfDebug.cpp.
References llvm::StringRef::startswith().
Referenced by llvm::DwarfDebug::addSubprogramNames(), and hasObjCCategory().
|
static |
Register a source line with debug info.
Returns the unique label that was emitted and which provides correspondence to the source line list.
Definition at line 1739 of file DwarfDebug.cpp.
References llvm::AsmPrinter::OutStreamer.
|
static |
Sort and unique GVEs by comparing their fragment offset.
Definition at line 901 of file DwarfDebug.cpp.
References B, llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::SmallVectorImpl< T >::erase(), llvm::DwarfCompileUnit::GlobalExpr::Expr, llvm::DIExpression::getFragmentInfo(), and llvm::sort().
Referenced by llvm::DwarfDebug::beginModule().
STATISTIC | ( | NumCSParams | , |
"Number of dbg call site params created" | |||
) |
|
static |
Determine whether a singular DBG_VALUE is valid for the entirety of its enclosing lexical scope.
The check ensures there are no other instructions in the same lexical scope preceding the DBG_VALUE and that its range is either open or otherwise rolls off the end of the scope.
Definition at line 1298 of file DwarfDebug.cpp.
References llvm::DwarfFile::addScopeLabel(), llvm::DwarfFile::addScopeVariable(), llvm::DebugHandlerBase::Asm, assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, ValueInfoT, detail::DenseSetPair< ValueT > >, ValueInfoT >::count(), llvm::dbgs(), llvm::DebugHandlerBase::DbgValues, llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::SmallVectorImpl< T >::erase(), llvm::LexicalScopes::findInlinedScope(), llvm::LexicalScopes::findLexicalScope(), llvm::MachineInstr::FrameSetup, llvm::MachineInstr::getDebugExpression(), llvm::MachineInstr::getDebugLoc(), getDebugLocValue(), llvm::AsmPrinter::getFunctionEnd(), llvm::DebugHandlerBase::getLabelAfterInsn(), llvm::DebugHandlerBase::getLabelBeforeInsn(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::LexicalScope::getRanges(), llvm::DILocalVariable::getScope(), llvm::LexicalScope::getScopeNode(), I, llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, ValueInfoT, detail::DenseSetPair< ValueT > >, ValueInfoT >::insert(), llvm::DIExpression::isFragment(), llvm::MachineOperand::isImm(), llvm::MachineInstr::isUndefDebugValue(), LLVM_DEBUG, llvm::lltok::LocalVar, llvm::DebugHandlerBase::LScopes, llvm::SmallVectorTemplateBase< T >::pop_back(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorTemplateCommon< T >::rbegin(), llvm::remove_if(), llvm::SmallVectorTemplateCommon< T >::rend(), and llvm::SmallVectorBase::size().
|
static |
Referenced by computeAccelTableKind().
Definition at line 169 of file DwarfDebug.cpp.
Definition at line 168 of file DwarfDebug.cpp.
|
static |
Referenced by llvm::DwarfDebug::beginModule().
Definition at line 167 of file DwarfDebug.cpp.
Definition at line 166 of file DwarfDebug.cpp.
|
static |
|
static |
Referenced by llvm::DwarfDebug::DwarfDebug().
|
static |
|
static |
Referenced by llvm::DwarfDebug::endModule().
|
static |
Referenced by llvm::DwarfDebug::DwarfDebug().
|
static |
|
static |
Referenced by llvm::DwarfDebug::shareAcrossDWOCUs().
|
static |
Definition at line 170 of file DwarfDebug.cpp.
Referenced by llvm::DIEBaseTypeRef::EmitValue(), and llvm::DIEBaseTypeRef::SizeOf().
|
static |