summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/DebugInfo.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-14 22:27:36 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-14 22:27:36 +0000
commit9885469922266d43622af58871253fadfef42d48 (patch)
treefc06d29b0e8d1b751e25e109086ba0fcfc1ef842 /llvm/lib/IR/DebugInfo.cpp
parent96a319588a752c0254f8b214c2454a95855bcac4 (diff)
downloadbcm5719-llvm-9885469922266d43622af58871253fadfef42d48.tar.gz
bcm5719-llvm-9885469922266d43622af58871253fadfef42d48.zip
IR: Move MDLocation into place
This commit moves `MDLocation`, finishing off PR21433. There's an accompanying clang commit for frontend testcases. I'll attach the testcase upgrade script I used to PR21433 to help out-of-tree frontends/backends. This changes the schema for `DebugLoc` and `DILocation` from: !{i32 3, i32 7, !7, !8} to: !MDLocation(line: 3, column: 7, scope: !7, inlinedAt: !8) Note that empty fields (line/column: 0 and inlinedAt: null) don't get printed by the assembly writer. llvm-svn: 226048
Diffstat (limited to 'llvm/lib/IR/DebugInfo.cpp')
-rw-r--r--llvm/lib/IR/DebugInfo.cpp19
1 files changed, 6 insertions, 13 deletions
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp
index 330d5e1d7e6..290dbe29c70 100644
--- a/llvm/lib/IR/DebugInfo.cpp
+++ b/llvm/lib/IR/DebugInfo.cpp
@@ -592,10 +592,7 @@ bool DIExpression::Verify() const {
}
bool DILocation::Verify() const {
- if (!DbgNode)
- return false;
-
- return DbgNode->getNumOperands() == 4;
+ return DbgNode && isa<MDLocation>(DbgNode);
}
bool DINameSpace::Verify() const {
@@ -830,16 +827,12 @@ void DICompileUnit::replaceGlobalVariables(DIArray GlobalVariables) {
DILocation DILocation::copyWithNewScope(LLVMContext &Ctx,
DILexicalBlockFile NewScope) {
- SmallVector<Metadata *, 10> Elts;
assert(Verify());
- for (unsigned I = 0; I < DbgNode->getNumOperands(); ++I) {
- if (I != 2)
- Elts.push_back(DbgNode->getOperand(I));
- else
- Elts.push_back(NewScope);
- }
- MDNode *NewDIL = MDNode::get(Ctx, Elts);
- return DILocation(NewDIL);
+ assert(NewScope && "Expected valid scope");
+
+ const auto *Old = cast<MDLocation>(DbgNode);
+ return DILocation(MDLocation::get(Ctx, Old->getLine(), Old->getColumn(),
+ NewScope, Old->getInlinedAt()));
}
unsigned DILocation::computeNewDiscriminator(LLVMContext &Ctx) {
OpenPOWER on IntegriCloud