mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-08 04:51:23 +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 getDirectory() const { return get()->getDirectory(); }
|
||||
bool atSameLineAs(const DILocation &Other) const {
|
||||
return (getLineNumber() == Other.getLineNumber() &&
|
||||
getFilename() == Other.getFilename());
|
||||
}
|
||||
|
||||
/// \brief Get the DWAF discriminator.
|
||||
///
|
||||
/// DWARF discriminators are used to distinguish identical file locations for
|
||||
|
@ -1166,6 +1166,23 @@ public:
|
||||
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 *getRawInlinedAt() const {
|
||||
if (getNumOperands() == 2)
|
||||
|
@ -189,7 +189,7 @@ bool AddDiscriminators::runOnFunction(Function &F) {
|
||||
// location as B's last instruction (Last), add a new
|
||||
// discriminator for First's location and all the instructions
|
||||
// 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
|
||||
// number for it.
|
||||
StringRef Filename = FirstDIL.getFilename();
|
||||
|
Loading…
Reference in New Issue
Block a user