mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 00:11:00 +00:00
DebugInfo: Move DILocation::getDiscriminator() to MDLocation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234819 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dc4806ef72
commit
3c42b7f3b7
@ -701,23 +701,7 @@ public:
|
||||
DILocation getOrigLocation() const { return get()->getInlinedAt(); }
|
||||
StringRef getFilename() const { return get()->getFilename(); }
|
||||
StringRef getDirectory() const { return get()->getDirectory(); }
|
||||
|
||||
/// \brief Get the DWAF discriminator.
|
||||
///
|
||||
/// DWARF discriminators are used to distinguish identical file locations for
|
||||
/// instructions that are on different basic blocks. If two instructions are
|
||||
/// inside the same lexical block and are in different basic blocks, we
|
||||
/// create a new lexical block with identical location as the original but
|
||||
/// with a different discriminator value
|
||||
/// (lib/Transforms/Util/AddDiscriminators.cpp for details).
|
||||
unsigned getDiscriminator() const {
|
||||
// Since discriminators are associated with lexical blocks, make
|
||||
// sure this location is a lexical block before retrieving its
|
||||
// value.
|
||||
if (auto *F = dyn_cast<MDLexicalBlockFile>(get()->getScope()))
|
||||
return F->getDiscriminator();
|
||||
return 0;
|
||||
}
|
||||
unsigned getDiscriminator() const { return get()->getDiscriminator(); }
|
||||
|
||||
/// \brief Generate a new discriminator value for this location.
|
||||
unsigned computeNewDiscriminator(LLVMContext &Ctx);
|
||||
|
@ -1203,6 +1203,12 @@ public:
|
||||
return getFilename() != RHS.getFilename() || getLine() != RHS.getLine();
|
||||
}
|
||||
|
||||
/// \brief Get the DWARF discriminator.
|
||||
///
|
||||
/// DWARF discriminators distinguish identical file locations between
|
||||
/// instructions that are on different basic blocks.
|
||||
inline unsigned getDiscriminator() const;
|
||||
|
||||
Metadata *getRawScope() const { return getOperand(0); }
|
||||
Metadata *getRawInlinedAt() const {
|
||||
if (getNumOperands() == 2)
|
||||
@ -1528,6 +1534,12 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
unsigned MDLocation::getDiscriminator() const {
|
||||
if (auto *F = dyn_cast<MDLexicalBlockFile>(getScope()))
|
||||
return F->getDiscriminator();
|
||||
return 0;
|
||||
}
|
||||
|
||||
class MDNamespace : public MDScope {
|
||||
friend class LLVMContextImpl;
|
||||
friend class MDNode;
|
||||
|
Loading…
Reference in New Issue
Block a user