DebugInfo: Gut DILocation
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 14 Apr 2015 01:35:55 +0000 (01:35 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 14 Apr 2015 01:35:55 +0000 (01:35 +0000)
This is along the same lines as r234832, but for `DILocation`.  Clean
out all accessors from `DILocation`.  Any callers should be using
`MDLocation` directly (e.g., via `operator->()`).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234835 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/DebugInfo.h
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
lib/IR/DebugInfo.cpp
lib/IR/DiagnosticInfo.cpp
lib/Transforms/Scalar/SampleProfile.cpp
lib/Transforms/Utils/AddDiscriminators.cpp

index d7aebeecdcb07500834d8db6b9a55bf769d9e334..717d0a23e9cef396b0fa9f3b0d9dff6360adcb99 100644 (file)
@@ -663,28 +663,15 @@ public:
   MDExpression &operator*() const { return *N; }
 };
 
   MDExpression &operator*() const { return *N; }
 };
 
-/// \brief This object holds location information.
-///
-/// This object is not associated with any DWARF tag.
-class DILocation : public DIDescriptor {
-public:
-  DILocation() = default;
-  DILocation(const MDLocation *N) : DIDescriptor(N) {}
+class DILocation {
+  MDLocation *N;
 
 
-  MDLocation *get() const {
-    return cast_or_null<MDLocation>(DIDescriptor::get());
-  }
-  operator MDLocation *() const { return get(); }
-  MDLocation *operator->() const { return get(); }
-  MDLocation &operator*() const { return *get(); }
+public:
+  DILocation(const MDLocation *N = nullptr) : N(const_cast<MDLocation *>(N)) {}
 
 
-  unsigned getLineNumber() const { return get()->getLine(); }
-  unsigned getColumnNumber() const { return get()->getColumn(); }
-  DIScope getScope() const { return DIScope(get()->getScope()); }
-  DILocation getOrigLocation() const { return get()->getInlinedAt(); }
-  StringRef getFilename() const { return get()->getFilename(); }
-  StringRef getDirectory() const { return get()->getDirectory(); }
-  unsigned getDiscriminator() const { return get()->getDiscriminator(); }
+  operator MDLocation *() const { return N; }
+  MDLocation *operator->() const { return N; }
+  MDLocation &operator*() const { return *N; }
 };
 
 class DIObjCProperty : public DIDescriptor {
 };
 
 class DIObjCProperty : public DIDescriptor {
index bc4d5e75fa0c1e61fc03026e3aaf36cbf2c886e7..4f051fbb52e4c4d24a56256e550cdf68aae64241 100644 (file)
@@ -430,10 +430,10 @@ DwarfCompileUnit::constructInlinedScopeDIE(LexicalScope *Scope) {
   attachRangesOrLowHighPC(*ScopeDIE, Scope->getRanges());
 
   // Add the call site information to the DIE.
   attachRangesOrLowHighPC(*ScopeDIE, Scope->getRanges());
 
   // Add the call site information to the DIE.
-  DILocation DL(Scope->getInlinedAt());
+  const MDLocation *IA = Scope->getInlinedAt();
   addUInt(*ScopeDIE, dwarf::DW_AT_call_file, None,
   addUInt(*ScopeDIE, dwarf::DW_AT_call_file, None,
-          getOrCreateSourceID(DL.getFilename(), DL.getDirectory()));
-  addUInt(*ScopeDIE, dwarf::DW_AT_call_line, None, DL.getLineNumber());
+          getOrCreateSourceID(IA->getFilename(), IA->getDirectory()));
+  addUInt(*ScopeDIE, dwarf::DW_AT_call_line, None, IA->getLine());
 
   // Add name to the name table, we do this here because we're guaranteed
   // to have concrete versions of our DW_TAG_inlined_subprogram nodes.
 
   // Add name to the name table, we do this here because we're guaranteed
   // to have concrete versions of our DW_TAG_inlined_subprogram nodes.
index 6bb69bad37a39090762eb9820020625872d4060b..2c3d00b2597a41acf6d1c07ad906ce314652f5d4 100644 (file)
@@ -179,8 +179,8 @@ void DebugInfoFinder::processLocation(const Module &M, DILocation Loc) {
   if (!Loc)
     return;
   InitializeTypeMap(M);
   if (!Loc)
     return;
   InitializeTypeMap(M);
-  processScope(Loc.getScope());
-  processLocation(M, Loc.getOrigLocation());
+  processScope(Loc->getScope());
+  processLocation(M, Loc->getInlinedAt());
 }
 
 void DebugInfoFinder::processType(DIType DT) {
 }
 
 void DebugInfoFinder::processType(DIType DT) {
index d5c8e3b8aa70752e0053e49b66417d1613ee7f0b..91635f67959d90d0c21957dc15b5c9c8051f356b 100644 (file)
@@ -136,10 +136,9 @@ void DiagnosticInfoOptimizationBase::getLocation(StringRef *Filename,
                                                  unsigned *Line,
                                                  unsigned *Column) const {
   MDLocation *L = getDebugLoc();
                                                  unsigned *Line,
                                                  unsigned *Column) const {
   MDLocation *L = getDebugLoc();
-  DILocation DIL = L;
-  *Filename = DIL.getFilename();
-  *Line = DIL.getLineNumber();
-  *Column = DIL.getColumnNumber();
+  *Filename = L->getFilename();
+  *Line = L->getLine();
+  *Column = L->getColumn();
 }
 
 const std::string DiagnosticInfoOptimizationBase::getLocationStr() const {
 }
 
 const std::string DiagnosticInfoOptimizationBase::getLocationStr() const {
index 705d042a809431d59255abc65e6435ace6cde189..6487ea64da52187123f7f9681cd407bd98a42e53 100644 (file)
@@ -226,7 +226,7 @@ unsigned SampleProfileLoader::getInstWeight(Instruction &Inst) {
 
   DILocation DIL = DLoc.get();
   int LOffset = Lineno - HeaderLineno;
 
   DILocation DIL = DLoc.get();
   int LOffset = Lineno - HeaderLineno;
-  unsigned Discriminator = DIL.getDiscriminator();
+  unsigned Discriminator = DIL->getDiscriminator();
   unsigned Weight = Samples->samplesAt(LOffset, Discriminator);
   DEBUG(dbgs() << "    " << Lineno << "." << Discriminator << ":" << Inst
                << " (line offset: " << LOffset << "." << Discriminator
   unsigned Weight = Samples->samplesAt(LOffset, Discriminator);
   DEBUG(dbgs() << "    " << Lineno << "." << Discriminator << ":" << Inst
                << " (line offset: " << LOffset << "." << Discriminator
index 2cbe93e30aa71d18857dc3ac2fa0af1f28fc9940..526dc34d65b40fd4bacdef38729f69908a70e04e 100644 (file)
@@ -192,8 +192,8 @@ bool AddDiscriminators::runOnFunction(Function &F) {
       if (!FirstDIL->canDiscriminate(*LastDIL)) {
         // Create a new lexical scope and compute a new discriminator
         // number for it.
       if (!FirstDIL->canDiscriminate(*LastDIL)) {
         // Create a new lexical scope and compute a new discriminator
         // number for it.
-        StringRef Filename = FirstDIL.getFilename();
-        DIScope Scope = FirstDIL.getScope();
+        StringRef Filename = FirstDIL->getFilename();
+        DIScope Scope = FirstDIL->getScope();
         DIFile File = Builder.createFile(Filename, Scope.getDirectory());
 
         // FIXME: Calculate the discriminator here, based on local information,
         DIFile File = Builder.createFile(Filename, Scope.getDirectory());
 
         // FIXME: Calculate the discriminator here, based on local information,
@@ -204,10 +204,10 @@ bool AddDiscriminators::runOnFunction(Function &F) {
         unsigned Discriminator = FirstDIL->computeNewDiscriminator();
         DILexicalBlockFile NewScope =
             Builder.createLexicalBlockFile(Scope, File, Discriminator);
         unsigned Discriminator = FirstDIL->computeNewDiscriminator();
         DILexicalBlockFile NewScope =
             Builder.createLexicalBlockFile(Scope, File, Discriminator);
-        DILocation NewDIL =
+        auto *NewDIL =
             MDLocation::get(Ctx, FirstDIL->getLine(), FirstDIL->getColumn(),
                             NewScope, FirstDIL->getInlinedAt());
             MDLocation::get(Ctx, FirstDIL->getLine(), FirstDIL->getColumn(),
                             NewScope, FirstDIL->getInlinedAt());
-        DebugLoc newDebugLoc = NewDIL.get();
+        DebugLoc newDebugLoc = NewDIL;
 
         // Attach this new debug location to First and every
         // instruction following First that shares the same location.
 
         // Attach this new debug location to First and every
         // instruction following First that shares the same location.
@@ -216,9 +216,9 @@ bool AddDiscriminators::runOnFunction(Function &F) {
           if (I1->getDebugLoc().get() != FirstDIL)
             break;
           I1->setDebugLoc(newDebugLoc);
           if (I1->getDebugLoc().get() != FirstDIL)
             break;
           I1->setDebugLoc(newDebugLoc);
-          DEBUG(dbgs() << NewDIL.getFilename() << ":" << NewDIL.getLineNumber()
-                       << ":" << NewDIL.getColumnNumber() << ":"
-                       << NewDIL.getDiscriminator() << *I1 << "\n");
+          DEBUG(dbgs() << NewDIL->getFilename() << ":" << NewDIL->getLine()
+                       << ":" << NewDIL->getColumn() << ":"
+                       << NewDIL->getDiscriminator() << *I1 << "\n");
         }
         DEBUG(dbgs() << "\n");
         Changed = true;
         }
         DEBUG(dbgs() << "\n");
         Changed = true;