summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-11 00:39:43 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-11 00:39:43 +0000
commit50c065bc7d84a73cdd63a39d811ee8eb392f4712 (patch)
tree2a99e82a86ed9aca6f8accc4de77c03ef385ec11
parentffb460fdf08a5e4c85c82d34e683e85ab0102784 (diff)
downloadbcm5719-llvm-50c065bc7d84a73cdd63a39d811ee8eb392f4712.tar.gz
bcm5719-llvm-50c065bc7d84a73cdd63a39d811ee8eb392f4712.zip
DebugInfo: Add forwarding getFilename() accessor to new hierarchy
Add forwarding `getFilename()` and `getDirectory()` accessors to nodes in the new hierarchy that define a `getFile()`. Use that to re-implement existing functionality in the `DIDescriptor` hierarchy. llvm-svn: 234671
-rw-r--r--llvm/include/llvm/IR/DebugInfo.h12
-rw-r--r--llvm/include/llvm/IR/DebugInfoMetadata.h41
-rw-r--r--llvm/lib/IR/DebugInfo.cpp14
3 files changed, 47 insertions, 20 deletions
diff --git a/llvm/include/llvm/IR/DebugInfo.h b/llvm/include/llvm/IR/DebugInfo.h
index 7703ad1cfe9..65c10347911 100644
--- a/llvm/include/llvm/IR/DebugInfo.h
+++ b/llvm/include/llvm/IR/DebugInfo.h
@@ -222,8 +222,8 @@ public:
///
/// If the scope node has a name, return that, else return an empty string.
StringRef getName() const;
- StringRef getFilename() const;
- StringRef getDirectory() const;
+ StringRef getFilename() const { return get()->getFilename(); }
+ StringRef getDirectory() const { return get()->getDirectory(); }
/// \brief Generate a reference to this DIScope.
///
@@ -697,8 +697,8 @@ public:
unsigned isDefinition() const { return get()->isDefinition(); }
DIScope getContext() const { return DIScope(get()->getScope()); }
- StringRef getFilename() const { return getFile().getFilename(); }
- StringRef getDirectory() const { return getFile().getDirectory(); }
+ StringRef getFilename() const { return get()->getFilename(); }
+ StringRef getDirectory() const { return get()->getDirectory(); }
DITypeRef getType() const { return get()->getType(); }
GlobalVariable *getGlobal() const;
@@ -812,8 +812,8 @@ public:
DILocation getOrigLocation() const {
return DILocation(get()->getInlinedAt());
}
- StringRef getFilename() const { return getScope().getFilename(); }
- StringRef getDirectory() const { return getScope().getDirectory(); }
+ 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());
diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h
index 4bed55ef1bd..374f7277636 100644
--- a/llvm/include/llvm/IR/DebugInfoMetadata.h
+++ b/llvm/include/llvm/IR/DebugInfoMetadata.h
@@ -416,6 +416,9 @@ protected:
public:
MDFile *getFile() const { return cast_or_null<MDFile>(getRawFile()); }
+ inline StringRef getFilename() const;
+ inline StringRef getDirectory() const;
+
/// \brief Return the raw underlying file.
///
/// An \a MDFile is an \a MDScope, but it doesn't point at a separate file
@@ -494,6 +497,18 @@ public:
}
};
+StringRef MDScope::getFilename() const {
+ if (auto *F = getFile())
+ return F->getFilename();
+ return "";
+}
+
+StringRef MDScope::getDirectory() const {
+ if (auto *F = getFile())
+ return F->getDirectory();
+ return "";
+}
+
/// \brief Base class for types.
///
/// TODO: Remove the hardcoded name and context, since many types don't use
@@ -1137,6 +1152,10 @@ public:
return cast_or_null<MDLocation>(getRawInlinedAt());
}
+ MDFile *getFile() const { return getScope()->getFile(); }
+ StringRef getFilename() const { return getScope()->getFilename(); }
+ StringRef getDirectory() const { return getScope()->getDirectory(); }
+
/// \brief Get the scope where this is inlined.
///
/// Walk through \a getInlinedAt() and return \a getScope() from the deepest
@@ -1628,6 +1647,17 @@ public:
MDFile *getFile() const { return cast_or_null<MDFile>(getRawFile()); }
MDTypeRef getType() const { return MDTypeRef(getRawType()); }
+ StringRef getFilename() const {
+ if (auto *F = getFile())
+ return F->getFilename();
+ return "";
+ }
+ StringRef getDirectory() const {
+ if (auto *F = getFile())
+ return F->getDirectory();
+ return "";
+ }
+
Metadata *getRawScope() const { return getOperand(0); }
MDString *getRawName() const { return getOperandAs<MDString>(1); }
Metadata *getRawFile() const { return getOperand(2); }
@@ -2021,6 +2051,17 @@ public:
StringRef getSetterName() const { return getStringOperand(3); }
MDType *getType() const { return cast_or_null<MDType>(getRawType()); }
+ StringRef getFilename() const {
+ if (auto *F = getFile())
+ return F->getFilename();
+ return "";
+ }
+ StringRef getDirectory() const {
+ if (auto *F = getFile())
+ return F->getDirectory();
+ return "";
+ }
+
MDString *getRawName() const { return getOperandAs<MDString>(0); }
Metadata *getRawFile() const { return getOperand(1); }
MDString *getRawGetterName() const { return getOperandAs<MDString>(2); }
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp
index 70a67225685..4b1c1f7bbd1 100644
--- a/llvm/lib/IR/DebugInfo.cpp
+++ b/llvm/lib/IR/DebugInfo.cpp
@@ -143,20 +143,6 @@ StringRef DIScope::getName() const {
return StringRef();
}
-StringRef DIScope::getFilename() const {
- if (auto *N = get())
- if (auto *F = N->getFile())
- return F->getFilename();
- return "";
-}
-
-StringRef DIScope::getDirectory() const {
- if (auto *N = get())
- if (auto *F = N->getFile())
- return F->getDirectory();
- return "";
-}
-
void DICompileUnit::replaceSubprograms(DIArray Subprograms) {
get()->replaceSubprograms(MDSubprogramArray(Subprograms));
}
OpenPOWER on IntegriCloud