diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2015-12-07 23:09:48 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2015-12-07 23:09:48 -0700 |
| commit | 113f0c9450398655717ea8bb5196a9df88f15000 (patch) | |
| tree | 0c7aeee019b61f7a95129e56debd5c0f4a55738f /src/codegen.cpp | |
| parent | 9c9ea935191190471c1b2fd30c8cffde74421456 (diff) | |
| download | zig-113f0c9450398655717ea8bb5196a9df88f15000.tar.gz zig-113f0c9450398655717ea8bb5196a9df88f15000.zip | |
add local variables to debug info
Diffstat (limited to 'src/codegen.cpp')
| -rw-r--r-- | src/codegen.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp index b72303a040..0d53a12c97 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -528,7 +528,15 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) { return nullptr; } else { add_debug_source_node(g, node); - return LLVMBuildStore(g->builder, value, variable->value_ref); + variable->value_ref = LLVMBuildAlloca(g->builder, + variable->type->type_ref, buf_ptr(&variable->name)); + LLVMValueRef store_instr = LLVMBuildStore(g->builder, value, variable->value_ref); + + LLVMZigDILocation *debug_loc = LLVMZigGetDebugLoc(node->line + 1, node->column + 1, + g->cur_block_context->di_scope); + LLVMZigInsertDeclare(g->dbuilder, variable->value_ref, variable->di_loc_var, + debug_loc, store_instr); + return nullptr; } } case NodeTypeCastExpr: @@ -577,6 +585,7 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) { if (variable->type == g->builtin_types.entry_void) { return nullptr; } else if (variable->is_ptr) { + add_debug_source_node(g, node); return LLVMBuildLoad(g->builder, variable->value_ref, ""); } else { return variable->value_ref; @@ -770,9 +779,6 @@ static void do_code_gen(CodeGen *g) { } else { tag = LLVMZigTag_DW_auto_variable(); arg_no = 0; - - add_debug_source_node(g, var->decl_node); - var->value_ref = LLVMBuildAlloca(g->builder, var->type->type_ref, buf_ptr(&var->name)); } var->di_loc_var = LLVMZigCreateLocalVariable(g->dbuilder, tag, |
