summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/DebugLoc.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-06 23:18:49 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-06 23:18:49 +0000
commit9d1cf4c1663ccd3c6b6168973215fad0f297ca35 (patch)
treee7900851342fcf73e633889a0a5344d3534598c1 /llvm/lib/IR/DebugLoc.cpp
parentb6030b9dbf1762877795fabbea7c7b4b7dbf627e (diff)
downloadbcm5719-llvm-9d1cf4c1663ccd3c6b6168973215fad0f297ca35.tar.gz
bcm5719-llvm-9d1cf4c1663ccd3c6b6168973215fad0f297ca35.zip
IR: Stop using DIDescriptor::is*() and auto-casting
`DIDescriptor`'s subclasses allow construction from incompatible pointers, and `DIDescriptor` defines a series of `isa<>`-like functions (e.g., `isCompileUnit()` instead of `isa<MDCompileUnit>()`) that clients tend to use like this: if (DICompileUnit(N).isCompileUnit()) foo(DICompileUnit(N)); These construction patterns work together to make `DIDescriptor` behave differently from normal pointers. Instead, use built-in `isa<>`, `dyn_cast<>`, etc., and only build `DIDescriptor`s from pointers that are valid for their type. I've split this into a few commits for different parts of LLVM and clang (to decrease the patch size and increase the chance of review). Generally the changes I made were NFC, but in a few places I made things stricter if it made sense from the surrounded code. Eventually a follow-up commit will remove the API for the "old" way. llvm-svn: 234255
Diffstat (limited to 'llvm/lib/IR/DebugLoc.cpp')
-rw-r--r--llvm/lib/IR/DebugLoc.cpp12
1 files changed, 3 insertions, 9 deletions
diff --git a/llvm/lib/IR/DebugLoc.cpp b/llvm/lib/IR/DebugLoc.cpp
index 95f6d67c542..df4802d9549 100644
--- a/llvm/lib/IR/DebugLoc.cpp
+++ b/llvm/lib/IR/DebugLoc.cpp
@@ -50,8 +50,7 @@ MDNode *DebugLoc::getInlinedAtScope() const {
DebugLoc DebugLoc::getFnDebugLoc() const {
// FIXME: Add a method on \a MDLocation that does this work.
const MDNode *Scope = getInlinedAtScope();
- DISubprogram SP = getDISubprogram(Scope);
- if (SP.isSubprogram())
+ if (DISubprogram SP = getDISubprogram(Scope))
return DebugLoc::get(SP.getScopeLineNumber(), 0, SP);
return DebugLoc();
@@ -87,13 +86,8 @@ void DebugLoc::print(raw_ostream &OS) const {
return;
// Print source line info.
- DIScope Scope(getScope());
- assert((!Scope || Scope.isScope()) &&
- "Scope of a DebugLoc should be null or a DIScope.");
- if (Scope)
- OS << Scope.getFilename();
- else
- OS << "<unknown>";
+ DIScope Scope = cast<MDScope>(getScope());
+ OS << Scope.getFilename();
OS << ':' << getLine();
if (getCol() != 0)
OS << ':' << getCol();
OpenPOWER on IntegriCloud