DebugLoc: Remove getFromDILexicalBlock()

The only user of `DebugLoc::getFromDILexicalBlock()` was creating a new
`MDLocation` as convenient API for passing an `MDScope`.  Stop doing
that, and remove the API.  If in the future we actually *want* to create
new DebugLocs, calling `MDLexicalBlock::get()` makes more sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233643 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-03-30 23:47:26 +00:00
parent 62e3e389b9
commit 497110d1b0
4 changed files with 14 additions and 27 deletions

View File

@ -200,9 +200,14 @@ public:
LexicalScope *getOrCreateAbstractScope(const MDLocalScope *Scope);
private:
/// getOrCreateLexicalScope - Find lexical scope for the given DebugLoc. If
/// getOrCreateLexicalScope - Find lexical scope for the given Scope/IA. If
/// not available then create new lexical scope.
LexicalScope *getOrCreateLexicalScope(const MDLocation *DL);
LexicalScope *getOrCreateLexicalScope(const MDLocalScope *Scope,
const MDLocation *IA = nullptr);
LexicalScope *getOrCreateLexicalScope(const MDLocation *DL) {
return DL ? getOrCreateLexicalScope(DL->getScope(), DL->getInlinedAt())
: nullptr;
}
/// getOrCreateRegularScope - Find or create a regular lexical scope.
LexicalScope *getOrCreateRegularScope(const MDLocalScope *Scope);

View File

@ -90,12 +90,6 @@ namespace llvm {
static DebugLoc get(unsigned Line, unsigned Col, MDNode *Scope,
MDNode *InlinedAt = nullptr);
/// \brief Translate the DILexicalBlock into a DebugLoc.
///
/// FIXME: Remove this. It has only one user, and the user just wants to
/// pass an \a MDScope around.
static DebugLoc getFromDILexicalBlock(MDNode *N);
unsigned getLine() const;
unsigned getCol() const;
MDNode *getScope() const;

View File

@ -134,15 +134,13 @@ LexicalScope *LexicalScopes::findLexicalScope(const MDLocation *DL) {
/// getOrCreateLexicalScope - Find lexical scope for the given DebugLoc. If
/// not available then create new lexical scope.
LexicalScope *LexicalScopes::getOrCreateLexicalScope(const MDLocation *DL) {
if (!DL)
return nullptr;
MDLocalScope *Scope = DL->getScope();
if (auto *InlinedAt = DL->getInlinedAt()) {
LexicalScope *LexicalScopes::getOrCreateLexicalScope(const MDLocalScope *Scope,
const MDLocation *IA) {
if (IA) {
// Create an abstract scope for inlined function.
getOrCreateAbstractScope(Scope);
// Create an inlined scope for inlined function.
return getOrCreateInlinedScope(Scope, InlinedAt);
return getOrCreateInlinedScope(Scope, IA);
}
return getOrCreateRegularScope(Scope);
@ -158,11 +156,10 @@ LexicalScopes::getOrCreateRegularScope(const MDLocalScope *Scope) {
if (I != LexicalScopeMap.end())
return &I->second;
// FIXME: Should the following dyn_cast be MDLexicalBlock?
LexicalScope *Parent = nullptr;
if (isa<MDLexicalBlockBase>(Scope)) // FIXME: Should this be MDLexicalBlock?
Parent =
getOrCreateLexicalScope(DebugLoc::getFromDILexicalBlock(
const_cast<MDLocalScope *>(Scope)).get());
if (auto *Block = dyn_cast<MDLexicalBlockBase>(Scope))
Parent = getOrCreateLexicalScope(Block->getScope());
I = LexicalScopeMap.emplace(std::piecewise_construct,
std::forward_as_tuple(Scope),
std::forward_as_tuple(Parent, Scope, nullptr,

View File

@ -66,15 +66,6 @@ DebugLoc DebugLoc::get(unsigned Line, unsigned Col,
return MDLocation::get(Scope->getContext(), Line, Col, Scope, InlinedAt);
}
/// getFromDILexicalBlock - Translate the DILexicalBlock into a DebugLoc.
DebugLoc DebugLoc::getFromDILexicalBlock(MDNode *N) {
DILexicalBlock LexBlock(N);
MDNode *Scope = LexBlock.getContext();
if (!Scope) return DebugLoc();
return get(LexBlock.getLineNumber(), LexBlock.getColumnNumber(), Scope,
nullptr);
}
void DebugLoc::dump() const {
#ifndef NDEBUG
if (!Loc)