DebugLoc: Remove getFromDILexicalBlock()
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 30 Mar 2015 23:47:26 +0000 (23:47 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 30 Mar 2015 23:47:26 +0000 (23:47 +0000)
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

include/llvm/CodeGen/LexicalScopes.h
include/llvm/IR/DebugLoc.h
lib/CodeGen/LexicalScopes.cpp
lib/IR/DebugLoc.cpp

index f7ce894cb81ad1be778274406ddc4bef239f524a..aa217d5519ec58d8eb4c94b8feb9e9519d64a089 100644 (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);
index 8f2781304a8185c4f70284c830ad3d30061aefa5..365860fd877468e46ff3ccbdc93a940d4b842700 100644 (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;
index 2b356b4adee822db6c369dff5e8cf9fe272d1307..45f312bb7b1aecbcc0caf3b88478ed2a9813b8d2 100644 (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,
index 5a5f201fe1211cfeb73a967670c524011e14be6a..95f6d67c542e80bb49e323f9cdd4cbe3cabeb156 100644 (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)