From 21fc15d55387151f9b15a0e3b96cdda92c18e31a Mon Sep 17 00:00:00 2001 From: Robert Widmann Date: Mon, 23 Apr 2018 22:31:49 +0000 Subject: [LLVM-C] DIBuilder Bindings For Variable Expressions Summary: Add DIBuilder bindings for (global) variable expressions, variable value expressions, and debug value intrinsic insertion. Reviewers: harlanhaskins, deadalnix, whitequark Reviewed By: whitequark Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D45979 llvm-svn: 330661 --- llvm/tools/llvm-c-test/debuginfo.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'llvm/tools/llvm-c-test') diff --git a/llvm/tools/llvm-c-test/debuginfo.c b/llvm/tools/llvm-c-test/debuginfo.c index b9c73f3b00d..411c4958d8c 100644 --- a/llvm/tools/llvm-c-test/debuginfo.c +++ b/llvm/tools/llvm-c-test/debuginfo.c @@ -36,11 +36,17 @@ int llvm_test_dibuilder(void) { "/test/include/llvm-c-test.h", 27, "", 0); - LLVMMetadataRef NameSpace = - LLVMDIBuilderCreateNameSpace(DIB, Module, "NameSpace", 9, false); - LLVMMetadataRef Int64Ty = LLVMDIBuilderCreateBasicType(DIB, "Int64", 5, 64, 0); + LLVMMetadataRef GlobalVarValueExpr = + LLVMDIBuilderCreateConstantValueExpression(DIB, 0); + LLVMDIBuilderCreateGlobalVariableExpression(DIB, Module, "global", 6, + "", 0, File, 1, Int64Ty, + true, GlobalVarValueExpr, + NULL, 0); + + LLVMMetadataRef NameSpace = + LLVMDIBuilderCreateNameSpace(DIB, Module, "NameSpace", 9, false); LLVMMetadataRef StructDbgElts[] = {Int64Ty, Int64Ty, Int64Ty}; LLVMMetadataRef StructDbgTy = @@ -109,14 +115,19 @@ int llvm_test_dibuilder(void) { LLVMMetadataRef FooLexicalBlock = LLVMDIBuilderCreateLexicalBlock(DIB, FunctionMetadata, File, 42, 0); - LLVMValueRef InnerFooFunction = - LLVMAddFunction(M, "foo_inner_scope", FooFuncTy); - LLVMMetadataRef InnerFunctionMetadata = - LLVMDIBuilderCreateFunction(DIB, FooLexicalBlock, "foo_inner_scope", 15, - "foo_inner_scope", 15, - File, 42, FunctionTy, true, true, - 42, 0, false); - LLVMSetSubprogram(InnerFooFunction, InnerFunctionMetadata); + LLVMBasicBlockRef FooVarBlock = LLVMAppendBasicBlock(FooFunction, "vars"); + LLVMMetadataRef FooVarsLocation = + LLVMDIBuilderCreateDebugLocation(LLVMGetGlobalContext(), 43, 0, + FunctionMetadata, NULL); + LLVMMetadataRef FooVar1 = + LLVMDIBuilderCreateAutoVariable(DIB, FooLexicalBlock, "d", 1, File, + 43, Int64Ty, true, 0, 0); + LLVMValueRef FooVal1 = LLVMConstInt(LLVMInt64Type(), 0, false); + LLVMMetadataRef FooVarValueExpr = + LLVMDIBuilderCreateConstantValueExpression(DIB, 0); + + LLVMDIBuilderInsertDbgValueAtEnd(DIB, FooVal1, FooVar1, FooVarValueExpr, + FooVarsLocation, FooVarBlock); LLVMDIBuilderFinalize(DIB); -- cgit v1.2.3