summaryrefslogtreecommitdiffstats
path: root/llvm/bindings/go
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-15 21:18:07 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-15 21:18:07 +0000
commitcd1aecfe369a642ad1e73fb6d98bb2582e3f87ef (patch)
treec02f5ef32e7c06f037b8b9c4e40a2da6756f2f8f /llvm/bindings/go
parent48b3503c16b35a6ad272162976724b6a8ba9fa9d (diff)
downloadbcm5719-llvm-cd1aecfe369a642ad1e73fb6d98bb2582e3f87ef.tar.gz
bcm5719-llvm-cd1aecfe369a642ad1e73fb6d98bb2582e3f87ef.zip
DebugInfo: Require a DebugLoc in DIBuilder::insertDeclare()
Change `DIBuilder::insertDeclare()` and `insertDbgValueIntrinsic()` to take an `MDLocation*`/`DebugLoc` parameter which it attaches to the created intrinsic. Assert at creation time that the `scope:` field's subprogram matches the variable's. There's a matching `clang` commit to use the API. The context for this is PR22778, which is removing the `inlinedAt:` field from `MDLocalVariable`, instead deferring to the `!dbg` location attached to the debug info intrinsic. The best way to ensure we always have a `!dbg` attachment is to require one at creation time. I'll be adding verifier checks next, but this API change is the best way to shake out frontend bugs. Note: I added an `llvm_unreachable()` in `bindings/go` and passed in `nullptr` for the `DebugLoc`. The `llgo` folks will eventually need to pass a valid `DebugLoc` here. llvm-svn: 235041
Diffstat (limited to 'llvm/bindings/go')
-rw-r--r--llvm/bindings/go/llvm/DIBuilderBindings.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/bindings/go/llvm/DIBuilderBindings.cpp b/llvm/bindings/go/llvm/DIBuilderBindings.cpp
index ee2e70a579b..e5734a7c0f3 100644
--- a/llvm/bindings/go/llvm/DIBuilderBindings.cpp
+++ b/llvm/bindings/go/llvm/DIBuilderBindings.cpp
@@ -234,10 +234,14 @@ LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Dref,
LLVMMetadataRef VarInfo,
LLVMMetadataRef Expr,
LLVMBasicBlockRef Block) {
+ // Fail immediately here until the llgo folks update their bindings. The
+ // called function is going to assert out anyway.
+ llvm_unreachable("DIBuilder API change requires a DebugLoc");
+
DIBuilder *D = unwrap(Dref);
- Instruction *Instr =
- D->insertDeclare(unwrap(Storage), unwrap<MDLocalVariable>(VarInfo),
- unwrap<MDExpression>(Expr), unwrap(Block));
+ Instruction *Instr = D->insertDeclare(
+ unwrap(Storage), unwrap<MDLocalVariable>(VarInfo),
+ unwrap<MDExpression>(Expr), /* DebugLoc */ nullptr, unwrap(Block));
return wrap(Instr);
}
@@ -246,9 +250,13 @@ LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef Dref,
LLVMMetadataRef VarInfo,
LLVMMetadataRef Expr,
LLVMBasicBlockRef Block) {
+ // Fail immediately here until the llgo folks update their bindings. The
+ // called function is going to assert out anyway.
+ llvm_unreachable("DIBuilder API change requires a DebugLoc");
+
DIBuilder *D = unwrap(Dref);
Instruction *Instr = D->insertDbgValueIntrinsic(
unwrap(Val), Offset, unwrap<MDLocalVariable>(VarInfo),
- unwrap<MDExpression>(Expr), unwrap(Block));
+ unwrap<MDExpression>(Expr), /* DebugLoc */ nullptr, unwrap(Block));
return wrap(Instr);
}
OpenPOWER on IntegriCloud