Fix TODO ParameterValue_Location

This commit is contained in:
gingerBill
2019-01-04 10:19:39 +00:00
parent 5bfe5ad82e
commit bb93a8b131
2 changed files with 13 additions and 12 deletions

View File

@@ -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);

View File

@@ -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;
}
}