mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-08 21:10:35 +00:00
DebugInfo: Rewrite atSameLineAs() as MDLocation::canDiscriminate()
Rewrite `DILocation::atSameLineAs()` as `MDLocation::canDiscriminate()` with a doxygen comment explaining its purpose. I've added a few FIXMEs where I think this check is too weak; fixing that is tracked by PR23199. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234674 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
43aeb128e1
commit
2c64a1129f
@ -810,10 +810,7 @@ public:
|
|||||||
}
|
}
|
||||||
StringRef getFilename() const { return get()->getFilename(); }
|
StringRef getFilename() const { return get()->getFilename(); }
|
||||||
StringRef getDirectory() const { return get()->getDirectory(); }
|
StringRef getDirectory() const { return get()->getDirectory(); }
|
||||||
bool atSameLineAs(const DILocation &Other) const {
|
|
||||||
return (getLineNumber() == Other.getLineNumber() &&
|
|
||||||
getFilename() == Other.getFilename());
|
|
||||||
}
|
|
||||||
/// \brief Get the DWAF discriminator.
|
/// \brief Get the DWAF discriminator.
|
||||||
///
|
///
|
||||||
/// DWARF discriminators are used to distinguish identical file locations for
|
/// DWARF discriminators are used to distinguish identical file locations for
|
||||||
|
@ -1166,6 +1166,23 @@ public:
|
|||||||
return getScope();
|
return getScope();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// \brief Check whether this can be discriminated from another location.
|
||||||
|
///
|
||||||
|
/// Check \c this can be discriminated from \c RHS in a linetable entry.
|
||||||
|
/// Scope and inlined-at chains are not recorded in the linetable, so they
|
||||||
|
/// cannot be used to distinguish basic blocks.
|
||||||
|
///
|
||||||
|
/// The current implementation is weaker than it should be, since it just
|
||||||
|
/// checks filename and line.
|
||||||
|
///
|
||||||
|
/// FIXME: Add a check for getDiscriminator().
|
||||||
|
/// FIXME: Add a check for getColumn().
|
||||||
|
/// FIXME: Change the getFilename() check to getFile() (or add one for
|
||||||
|
/// getDirectory()).
|
||||||
|
bool canDiscriminate(const MDLocation &RHS) const {
|
||||||
|
return getFilename() != RHS.getFilename() || getLine() != RHS.getLine();
|
||||||
|
}
|
||||||
|
|
||||||
Metadata *getRawScope() const { return getOperand(0); }
|
Metadata *getRawScope() const { return getOperand(0); }
|
||||||
Metadata *getRawInlinedAt() const {
|
Metadata *getRawInlinedAt() const {
|
||||||
if (getNumOperands() == 2)
|
if (getNumOperands() == 2)
|
||||||
|
@ -189,7 +189,7 @@ bool AddDiscriminators::runOnFunction(Function &F) {
|
|||||||
// location as B's last instruction (Last), add a new
|
// location as B's last instruction (Last), add a new
|
||||||
// discriminator for First's location and all the instructions
|
// discriminator for First's location and all the instructions
|
||||||
// in Succ that share the same location with First.
|
// in Succ that share the same location with First.
|
||||||
if (FirstDIL.atSameLineAs(LastDIL)) {
|
if (!FirstDIL->canDiscriminate(*LastDIL)) {
|
||||||
// Create a new lexical scope and compute a new discriminator
|
// Create a new lexical scope and compute a new discriminator
|
||||||
// number for it.
|
// number for it.
|
||||||
StringRef Filename = FirstDIL.getFilename();
|
StringRef Filename = FirstDIL.getFilename();
|
||||||
|
Loading…
Reference in New Issue
Block a user