aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2015-12-07 23:09:48 -0700
committerAndrew Kelley <superjoe30@gmail.com>2015-12-07 23:09:48 -0700
commit113f0c9450398655717ea8bb5196a9df88f15000 (patch)
tree0c7aeee019b61f7a95129e56debd5c0f4a55738f /src/codegen.cpp
parent9c9ea935191190471c1b2fd30c8cffde74421456 (diff)
downloadzig-113f0c9450398655717ea8bb5196a9df88f15000.tar.gz
zig-113f0c9450398655717ea8bb5196a9df88f15000.zip
add local variables to debug info
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp14
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,