authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2015-12-07 23:40:58-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2015-12-07 23:40:58-07:00
log5dfe4d6387f874a83a51a13446eb04fb6b77de94
tree0f9f3b9cf2e68812528a28f50d3790a6337b55ce
parent113f0c9450398655717ea8bb5196a9df88f15000

codegen: do all the allocas at beginning of function

fixes debugging

2 files changed, 3 insertions(+), 3 deletions(-)

README.md-1
...@@ -55,7 +55,6 @@ compromises backward compatibility....@@ -55,7 +55,6 @@ compromises backward compatibility.
5555
56### Roadmap56### Roadmap
5757
58 * debugging for variables
59 * structs58 * structs
60 * loops59 * loops
61 * enums60 * enums
src/codegen.cpp+3-2
...@@ -528,8 +528,6 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {...@@ -528,8 +528,6 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {
528 return nullptr;528 return nullptr;
529 } else {529 } else {
530 add_debug_source_node(g, node);530 add_debug_source_node(g, node);
531 variable->value_ref = LLVMBuildAlloca(g->builder,
532 variable->type->type_ref, buf_ptr(&variable->name));
533 LLVMValueRef store_instr = LLVMBuildStore(g->builder, value, variable->value_ref);531 LLVMValueRef store_instr = LLVMBuildStore(g->builder, value, variable->value_ref);
534532
535 LLVMZigDILocation *debug_loc = LLVMZigGetDebugLoc(node->line + 1, node->column + 1,533 LLVMZigDILocation *debug_loc = LLVMZigGetDebugLoc(node->line + 1, node->column + 1,
...@@ -779,6 +777,9 @@ static void do_code_gen(CodeGen *g) {...@@ -779,6 +777,9 @@ static void do_code_gen(CodeGen *g) {
779 } else {777 } else {
780 tag = LLVMZigTag_DW_auto_variable();778 tag = LLVMZigTag_DW_auto_variable();
781 arg_no = 0;779 arg_no = 0;
780
781 add_debug_source_node(g, var->decl_node);
782 var->value_ref = LLVMBuildAlloca(g->builder, var->type->type_ref, buf_ptr(&var->name));
782 }783 }
783784
784 var->di_loc_var = LLVMZigCreateLocalVariable(g->dbuilder, tag,785 var->di_loc_var = LLVMZigCreateLocalVariable(g->dbuilder, tag,