From bb93a8b131e58b9f897be08fb88f662ade7e34fe Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 4 Jan 2019 10:19:39 +0000 Subject: [PATCH] Fix TODO ParameterValue_Location --- src/ir.cpp | 3 +-- src/ir_print.cpp | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/ir.cpp b/src/ir.cpp index a8b2e77c3..604e61d4b 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -6441,8 +6441,7 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) { args[i] = ir_value_nil(e->type); break; case ParameterValue_Location: - // args[i] = - GB_PANIC("TODO ParameterValue_Location"); + args[i] = ir_emit_source_code_location(proc, proc->entity->token.string, ast_token(expr).pos); break; case ParameterValue_Value: args[i] = ir_build_expr(proc, e->Variable.param_value.ast_value); diff --git a/src/ir_print.cpp b/src/ir_print.cpp index 3da15607c..40325ae9f 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -1888,17 +1888,19 @@ void ir_print_instr(irFileBuffer *f, irModule *m, irValue *value) { TokenPos pos = e->token.pos; irDebugInfo **lookup_di = map_get(&m->debug_info, hash_entity(e)); - GB_ASSERT_NOT_NULL(*lookup_di); - irDebugInfo* local_var_di = *lookup_di; + if (lookup_di != nullptr) { + GB_ASSERT_NOT_NULL(*lookup_di); + irDebugInfo* local_var_di = *lookup_di; - ir_write_str_lit(f, "call void @llvm.dbg.declare("); - ir_write_str_lit(f, "metadata "); - ir_print_type(f, m, vt); - ir_write_byte(f, ' '); - ir_print_value(f, m, dd->value, vt); - ir_fprintf(f, ", metadata !%d", local_var_di->id); - ir_write_str_lit(f, ", metadata !DIExpression())"); - ir_print_debug_location(f, m, value); + ir_write_str_lit(f, "call void @llvm.dbg.declare("); + ir_write_str_lit(f, "metadata "); + ir_print_type(f, m, vt); + ir_write_byte(f, ' '); + ir_print_value(f, m, dd->value, vt); + ir_fprintf(f, ", metadata !%d", local_var_di->id); + ir_write_str_lit(f, ", metadata !DIExpression())"); + ir_print_debug_location(f, m, value); + } break; } }