[llvm] r235327 - DebugInfo: Remove DIScope

Duncan P. N. Exon Smith dexonsmith at apple.com
Mon Apr 20 11:32:29 PDT 2015


Author: dexonsmith
Date: Mon Apr 20 13:32:29 2015
New Revision: 235327

URL: http://llvm.org/viewvc/llvm-project?rev=235327&view=rev
Log:
DebugInfo: Remove DIScope

Replace uses of `DIScope` with `MDScope*`.  There was one spot where
I've left an `MDScope*` uninitialized (where `DIScope` would have been
default-initialized to `nullptr`) -- this is intentional, since the
if/else that follows should unconditional assign it to a value.

Modified:
    llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp
    llvm/trunk/include/llvm/IR/DebugInfo.h
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h

Modified: llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp?rev=235327&r1=235326&r2=235327&view=diff
==============================================================================
--- llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp (original)
+++ llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp Mon Apr 20 13:32:29 2015
@@ -93,13 +93,13 @@ class ExprAST;
 }
 static IRBuilder<> Builder(getGlobalContext());
 struct DebugInfo {
-  DICompileUnit TheCU;
-  DIType DblTy;
-  std::vector<DIScope *> LexicalBlocks;
-  std::map<const PrototypeAST *, DIScope> FnScopeMap;
+  MDCompileUnit *TheCU;
+  MDType *DblTy;
+  std::vector<MDScope *> LexicalBlocks;
+  std::map<const PrototypeAST *, MDScope *> FnScopeMap;
 
   void emitLocation(ExprAST *AST);
-  DIType getDoubleTy();
+  MDType *getDoubleTy();
 } KSDbgInfo;
 
 static std::string IdentifierStr; // Filled in if tok_identifier
@@ -816,7 +816,7 @@ static PrototypeAST *ParseExtern() {
 
 static DIBuilder *DBuilder;
 
-DIType DebugInfo::getDoubleTy() {
+MDType *DebugInfo::getDoubleTy() {
   if (DblTy)
     return DblTy;
 
@@ -836,9 +836,9 @@ void DebugInfo::emitLocation(ExprAST *AS
       DebugLoc::get(AST->getLine(), AST->getCol(), Scope));
 }
 
-static MDSubroutineType *CreateFunctionType(unsigned NumArgs, DIFile Unit) {
+static MDSubroutineType *CreateFunctionType(unsigned NumArgs, MDFile *Unit) {
   SmallVector<Metadata *, 8> EltTys;
-  DIType DblTy = KSDbgInfo.getDoubleTy();
+  MDType *DblTy = KSDbgInfo.getDoubleTy();
 
   // Add the result type.
   EltTys.push_back(DblTy);
@@ -846,8 +846,8 @@ static MDSubroutineType *CreateFunctionT
   for (unsigned i = 0, e = NumArgs; i != e; ++i)
     EltTys.push_back(DblTy);
 
-  DITypeArray EltTypeArray = DBuilder->getOrCreateTypeArray(EltTys);
-  return DBuilder->createSubroutineType(Unit, EltTypeArray);
+  return DBuilder->createSubroutineType(Unit,
+                                        DBuilder->getOrCreateTypeArray(EltTys));
 }
 
 //===----------------------------------------------------------------------===//
@@ -1224,12 +1224,12 @@ Function *PrototypeAST::Codegen() {
     AI->setName(Args[Idx]);
 
   // Create a subprogram DIE for this function.
-  DIFile Unit = DBuilder->createFile(KSDbgInfo.TheCU->getFilename(),
-                                     KSDbgInfo.TheCU->getDirectory());
+  MDFile *Unit = DBuilder->createFile(KSDbgInfo.TheCU->getFilename(),
+                                      KSDbgInfo.TheCU->getDirectory());
   MDScope *FContext = Unit;
   unsigned LineNo = Line;
   unsigned ScopeLine = Line;
-  DISubprogram SP = DBuilder->createFunction(
+  MDSubprogram *SP = DBuilder->createFunction(
       FContext, Name, StringRef(), Unit, LineNo,
       CreateFunctionType(Args.size(), Unit), false /* internal linkage */,
       true /* definition */, ScopeLine, DebugNode::FlagPrototyped, false, F);
@@ -1247,15 +1247,15 @@ void PrototypeAST::CreateArgumentAllocas
     AllocaInst *Alloca = CreateEntryBlockAlloca(F, Args[Idx]);
 
     // Create a debug descriptor for the variable.
-    DIScope *Scope = KSDbgInfo.LexicalBlocks.back();
-    DIFile Unit = DBuilder->createFile(KSDbgInfo.TheCU->getFilename(),
-                                       KSDbgInfo.TheCU->getDirectory());
-    DIVariable D = DBuilder->createLocalVariable(dwarf::DW_TAG_arg_variable,
-                                                 *Scope, Args[Idx], Unit, Line,
-                                                 KSDbgInfo.getDoubleTy(), Idx);
+    MDScope *Scope = KSDbgInfo.LexicalBlocks.back();
+    MDFile *Unit = DBuilder->createFile(KSDbgInfo.TheCU->getFilename(),
+                                        KSDbgInfo.TheCU->getDirectory());
+    MDLocalVariable *D = DBuilder->createLocalVariable(
+        dwarf::DW_TAG_arg_variable, Scope, Args[Idx], Unit, Line,
+        KSDbgInfo.getDoubleTy(), Idx);
 
     DBuilder->insertDeclare(Alloca, D, DBuilder->createExpression(),
-                            DebugLoc::get(Line, 0, *Scope),
+                            DebugLoc::get(Line, 0, Scope),
                             Builder.GetInsertBlock());
 
     // Store the initial value into the alloca.

Modified: llvm/trunk/include/llvm/IR/DebugInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugInfo.h?rev=235327&r1=235326&r2=235327&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/DebugInfo.h (original)
+++ llvm/trunk/include/llvm/IR/DebugInfo.h Mon Apr 20 13:32:29 2015
@@ -52,7 +52,6 @@ class DILexicalBlock;
 class DILexicalBlockFile;
 class DIVariable;
 class DIType;
-class DIScope;
 class DIObjCProperty;
 
 /// \brief Maps from type identifier to the actual MDNode.
@@ -64,7 +63,6 @@ typedef DenseMap<const MDString *, MDNod
   template <> struct simplify_type<DESC>;
 DECLARE_SIMPLIFY_DESCRIPTOR(DISubrange)
 DECLARE_SIMPLIFY_DESCRIPTOR(DIEnumerator)
-DECLARE_SIMPLIFY_DESCRIPTOR(DIScope)
 DECLARE_SIMPLIFY_DESCRIPTOR(DIType)
 DECLARE_SIMPLIFY_DESCRIPTOR(DIBasicType)
 DECLARE_SIMPLIFY_DESCRIPTOR(DIDerivedType)
@@ -112,24 +110,12 @@ public:
   MDEnumerator &operator*() const { return *N; }
 };
 
-class DIScope {
-  MDScope *N;
-
-public:
-  DIScope(const MDScope *N = nullptr) : N(const_cast<MDScope *>(N)) {}
-
-  operator MDScope *() const { return N; }
-  MDScope *operator->() const { return N; }
-  MDScope &operator*() const { return *N; }
-};
-
 class DIType {
   MDType *N;
 
 public:
   DIType(const MDType *N = nullptr) : N(const_cast<MDType *>(N)) {}
 
-  operator DIScope() const { return N; }
   operator MDType *() const { return N; }
   MDType *operator->() const { return N; }
   MDType &operator*() const { return *N; }
@@ -194,7 +180,6 @@ class DIFile {
 public:
   DIFile(const MDFile *N = nullptr) : N(const_cast<MDFile *>(N)) {}
 
-  operator DIScope() const { return N; }
   operator MDFile *() const { return N; }
   MDFile *operator->() const { return N; }
   MDFile &operator*() const { return *N; }
@@ -207,7 +192,6 @@ public:
   DICompileUnit(const MDCompileUnit *N = nullptr)
       : N(const_cast<MDCompileUnit *>(N)) {}
 
-  operator DIScope() const { return N; }
   operator MDCompileUnit *() const { return N; }
   MDCompileUnit *operator->() const { return N; }
   MDCompileUnit &operator*() const { return *N; }
@@ -220,7 +204,6 @@ public:
   DISubprogram(const MDSubprogram *N = nullptr)
       : N(const_cast<MDSubprogram *>(N)) {}
 
-  operator DIScope() const { return N; }
   operator MDSubprogram *() const { return N; }
   MDSubprogram *operator->() const { return N; }
   MDSubprogram &operator*() const { return *N; }
@@ -257,7 +240,6 @@ public:
   DINameSpace(const MDNamespace *N = nullptr)
       : N(const_cast<MDNamespace *>(N)) {}
 
-  operator DIScope() const { return N; }
   operator MDNamespace *() const { return N; }
   MDNamespace *operator->() const { return N; }
   MDNamespace &operator*() const { return *N; }
@@ -366,7 +348,6 @@ public:
   template <> struct simplify_type<DESC> : simplify_type<const DESC> {};
 SIMPLIFY_DESCRIPTOR(DISubrange)
 SIMPLIFY_DESCRIPTOR(DIEnumerator)
-SIMPLIFY_DESCRIPTOR(DIScope)
 SIMPLIFY_DESCRIPTOR(DIType)
 SIMPLIFY_DESCRIPTOR(DIBasicType)
 SIMPLIFY_DESCRIPTOR(DIDerivedType)

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=235327&r1=235326&r2=235327&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Mon Apr 20 13:32:29 2015
@@ -104,8 +104,8 @@ DIE *DwarfCompileUnit::getOrCreateGlobal
 
   assert(GV);
 
-  DIScope GVContext = GV->getScope();
-  DIType GTy = DD->resolve(GV->getType());
+  auto *GVContext = GV->getScope();
+  auto *GTy = DD->resolve(GV->getType());
 
   // Construct the context before querying for the existence of the DIE in
   // case such construction creates the DIE.
@@ -113,8 +113,7 @@ DIE *DwarfCompileUnit::getOrCreateGlobal
 
   // Add to map.
   DIE *VariableDIE = &createAndAddDIE(GV->getTag(), *ContextDIE, GV);
-  DIScope DeclContext;
-
+  MDScope *DeclContext;
   if (auto *SDMDecl = GV->getStaticDataMemberDeclaration()) {
     DeclContext = resolve(SDMDecl->getScope());
     assert(SDMDecl->isStaticMember() && "Expected static member decl");
@@ -306,7 +305,7 @@ void DwarfCompileUnit::constructScopeDIE
   if (!Scope || !Scope->getScopeNode())
     return;
 
-  DIScope DS(Scope->getScopeNode());
+  auto *DS = Scope->getScopeNode();
 
   assert((Scope->getInlinedAt() || !isa<MDSubprogram>(DS)) &&
          "Only handle inlined subprograms here, use "
@@ -419,8 +418,8 @@ void DwarfCompileUnit::attachRangesOrLow
 std::unique_ptr<DIE>
 DwarfCompileUnit::constructInlinedScopeDIE(LexicalScope *Scope) {
   assert(Scope->getScopeNode());
-  DIScope DS(Scope->getScopeNode());
-  DISubprogram InlinedSP = getDISubprogram(DS);
+  auto *DS = Scope->getScopeNode();
+  auto *InlinedSP = getDISubprogram(DS);
   // Find the subprogram's DwarfCompileUnit in the SPMap in case the subprogram
   // was inlined from another compile unit.
   DIE *OriginDIE = DU->getAbstractSPDies()[InlinedSP];
@@ -708,7 +707,7 @@ void DwarfCompileUnit::emitHeader(bool U
 
 /// addGlobalName - Add a new global name to the compile unit.
 void DwarfCompileUnit::addGlobalName(StringRef Name, DIE &Die,
-                                     DIScope Context) {
+                                     const MDScope *Context) {
   if (includeMinimalInlineScopes())
     return;
   std::string FullName = getParentContextString(Context) + Name.str();
@@ -716,8 +715,8 @@ void DwarfCompileUnit::addGlobalName(Str
 }
 
 /// Add a new global type to the unit.
-void DwarfCompileUnit::addGlobalType(DIType Ty, const DIE &Die,
-                                     DIScope Context) {
+void DwarfCompileUnit::addGlobalType(const MDType *Ty, const DIE &Die,
+                                     const MDScope *Context) {
   if (includeMinimalInlineScopes())
     return;
   std::string FullName = getParentContextString(Context) + Ty->getName().str();
@@ -809,7 +808,7 @@ void DwarfCompileUnit::addExpr(DIELoc &D
 void DwarfCompileUnit::applySubprogramAttributesToDefinition(DISubprogram SP,
                                                              DIE &SPDie) {
   auto *SPDecl = SP->getDeclaration();
-  DIScope Context = resolve(SPDecl ? SPDecl->getScope() : SP->getScope());
+  auto *Context = resolve(SPDecl ? SPDecl->getScope() : SP->getScope());
   applySubprogramAttributes(SP, SPDie, includeMinimalInlineScopes());
   addGlobalName(SP->getName(), SPDie, Context);
 }

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h?rev=235327&r1=235326&r2=235327&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h Mon Apr 20 13:32:29 2015
@@ -183,10 +183,11 @@ public:
   }
 
   /// Add a new global name to the compile unit.
-  void addGlobalName(StringRef Name, DIE &Die, DIScope Context) override;
+  void addGlobalName(StringRef Name, DIE &Die, const MDScope *Context) override;
 
   /// Add a new global type to the compile unit.
-  void addGlobalType(DIType Ty, const DIE &Die, DIScope Context) override;
+  void addGlobalType(const MDType *Ty, const DIE &Die,
+                     const MDScope *Context) override;
 
   const StringMap<const DIE *> &getGlobalNames() const { return GlobalNames; }
   const StringMap<const DIE *> &getGlobalTypes() const { return GlobalTypes; }

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=235327&r1=235326&r2=235327&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Mon Apr 20 13:32:29 2015
@@ -772,7 +772,7 @@ void DwarfUnit::addTemplateParams(DIE &B
 }
 
 /// getOrCreateContextDIE - Get context owner's DIE.
-DIE *DwarfUnit::getOrCreateContextDIE(DIScope Context) {
+DIE *DwarfUnit::getOrCreateContextDIE(const MDScope *Context) {
   if (!Context || isa<MDFile>(Context))
     return &getUnitDie();
   if (auto *T = dyn_cast<MDType>(Context))
@@ -785,7 +785,7 @@ DIE *DwarfUnit::getOrCreateContextDIE(DI
 }
 
 DIE *DwarfUnit::createTypeDIE(DICompositeType Ty) {
-  DIScope Context = resolve(Ty->getScope());
+  auto *Context = resolve(Ty->getScope());
   DIE *ContextDIE = getOrCreateContextDIE(Context);
 
   if (DIE *TyDIE = getDIE(Ty))
@@ -817,7 +817,7 @@ DIE *DwarfUnit::getOrCreateTypeDIE(const
 
   // Construct the context before querying for the existence of the DIE in case
   // such construction creates the DIE.
-  DIScope Context = resolve(Ty->getScope());
+  auto *Context = resolve(Ty->getScope());
   DIE *ContextDIE = getOrCreateContextDIE(Context);
   assert(ContextDIE);
 
@@ -846,8 +846,8 @@ DIE *DwarfUnit::getOrCreateTypeDIE(const
   return &TyDIE;
 }
 
-void DwarfUnit::updateAcceleratorTables(DIScope Context, DIType Ty,
-                                        const DIE &TyDIE) {
+void DwarfUnit::updateAcceleratorTables(const MDScope *Context,
+                                        const MDType *Ty, const DIE &TyDIE) {
   if (!Ty->getName().empty() && !Ty->isForwardDecl()) {
     bool IsImplementation = 0;
     if (auto *CT = dyn_cast<MDCompositeTypeBase>(Ty)) {
@@ -890,7 +890,7 @@ void DwarfUnit::addType(DIE &Entity, DIT
 /// it as a string. This is done at the metadata level because DIEs may
 /// not currently have been added to the parent context and walking the
 /// DIEs looking for names is more expensive than walking the metadata.
-std::string DwarfUnit::getParentContextString(DIScope Context) const {
+std::string DwarfUnit::getParentContextString(const MDScope *Context) const {
   if (!Context)
     return "";
 
@@ -899,7 +899,7 @@ std::string DwarfUnit::getParentContextS
     return "";
 
   std::string CS;
-  SmallVector<DIScope, 1> Parents;
+  SmallVector<const MDScope *, 1> Parents;
   while (!isa<MDCompileUnit>(Context)) {
     Parents.push_back(Context);
     if (Context->getScope())
@@ -912,9 +912,7 @@ std::string DwarfUnit::getParentContextS
 
   // Reverse iterate over our list to go from the outermost construct to the
   // innermost.
-  for (SmallVectorImpl<DIScope>::reverse_iterator I = Parents.rbegin(),
-                                                  E = Parents.rend();
-       I != E; ++I) {
+  for (auto I = Parents.rbegin(), E = Parents.rend(); I != E; ++I) {
     const MDScope *Ctx = *I;
     StringRef Name = Ctx->getName();
     if (Name.empty() && isa<MDNamespace>(Ctx))

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=235327&r1=235326&r2=235327&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Mon Apr 20 13:32:29 2015
@@ -153,13 +153,15 @@ public:
 
   /// getParentContextString - Get a string containing the language specific
   /// context for a global name.
-  std::string getParentContextString(DIScope Context) const;
+  std::string getParentContextString(const MDScope *Context) const;
 
   /// Add a new global name to the compile unit.
-  virtual void addGlobalName(StringRef Name, DIE &Die, DIScope Context) {}
+  virtual void addGlobalName(StringRef Name, DIE &Die, const MDScope *Context) {
+  }
 
   /// Add a new global type to the compile unit.
-  virtual void addGlobalType(DIType Ty, const DIE &Die, DIScope Context) {}
+  virtual void addGlobalType(const MDType *Ty, const DIE &Die,
+                             const MDScope *Context) {}
 
   /// addAccelNamespace - Add a new name to the namespace accelerator table.
   void addAccelNamespace(StringRef Name, const DIE &Die);
@@ -302,7 +304,7 @@ public:
   DIE *createTypeDIE(DICompositeType Ty);
 
   /// getOrCreateContextDIE - Get context owner's DIE.
-  DIE *getOrCreateContextDIE(DIScope Context);
+  DIE *getOrCreateContextDIE(const MDScope *Context);
 
   /// constructContainingTypeDIEs - Construct DIEs for types that contain
   /// vtables.
@@ -402,7 +404,8 @@ private:
 
   /// If this is a named finished type then include it in the list of types for
   /// the accelerator tables.
-  void updateAcceleratorTables(DIScope Context, DIType Ty, const DIE &TyDIE);
+  void updateAcceleratorTables(const MDScope *Context, const MDType *Ty,
+                               const DIE &TyDIE);
 
   virtual bool isDwoUnit() const = 0;
 };





More information about the llvm-commits mailing list