diff --git a/src/codegen/x86_64/CodeGen.zig b/src/codegen/x86_64/CodeGen.zig index 62c3c1a41bc51e3a1fdb85b38309fafbd3d28412..c3b548b58a7ae0624b7bbea3c25fb93794b2ae9d 100644 --- a/src/codegen/x86_64/CodeGen.zig +++ b/src/codegen/x86_64/CodeGen.zig @@ -1224,9 +1224,7 @@ fn formatWipMir(data: FormatWipMirData, w: *Writer) Writer.Error!void { .pseudo_dbg_enter_block_none, .pseudo_dbg_leave_block_none, .pseudo_dbg_end_none, - .pseudo_dbg_arg_none, .pseudo_dbg_var_args_none, - .pseudo_dbg_var_none, .pseudo_dead_none, => {}, .pseudo_dbg_line_stmt_line_column, @@ -2318,39 +2316,32 @@ fn genMainBody( }; defer zir_param_index += 1; - if (comptime_args.len > 0) switch (comptime_args.get(ip)[zir_param_index]) { - .none => {}, - else => |comptime_arg| { - try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = ip.typeOf(comptime_arg) }); - _ = try cg.addInst(.{ - .tag = .pseudo, - .ops = .pseudo_dbg_arg_val, - .data = .{ .ip_index = comptime_arg }, - }); - continue; + const arg_ty: Type, const arg_val: ?Value = arg: switch (if (comptime_args.len > 0) + comptime_args.get(ip)[zir_param_index] + else + .none) { + else => |arg_val| .{ .fromInterned(ip.typeOf(arg_val)), .fromInterned(arg_val) }, + .none => { + const arg_ty: Type = .fromInterned(fn_info.param_types.get(ip)[fn_param_index]); + fn_param_index += 1; + break :arg .{ arg_ty, try arg_ty.onePossibleValue(pt) }; }, }; - - const arg_ty = fn_info.param_types.get(ip)[fn_param_index]; - try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = arg_ty }); - fn_param_index += 1; - - if (air_arg_index == air_args_body.len) { - try cg.asmPseudo(.pseudo_dbg_arg_none); + try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = arg_ty.toIntern() }); + if (arg_val) |val| { + _ = try cg.addInst(.{ + .tag = .pseudo, + .ops = .pseudo_dbg_arg_val, + .data = .{ .ip_index = val.toIntern() }, + }); continue; } + const air_arg_inst = air_args_body[air_arg_index]; const air_arg_data = cg.air.instructions.items(.data)[air_arg_index].arg; - if (air_arg_data.zir_param_index != zir_param_index) { - try cg.asmPseudo(.pseudo_dbg_arg_none); - continue; - } air_arg_index += 1; - try cg.genLocalDebugInfo( - .arg, - .fromInterned(arg_ty), - cg.getResolvedInstValue(air_arg_inst).short, - ); + assert(air_arg_data.zir_param_index == zir_param_index); + try cg.genLocalDebugInfo(.arg, arg_ty, cg.getResolvedInstValue(air_arg_inst).short); } if (fn_info.is_var_args) try cg.asmPseudo(.pseudo_dbg_var_args_none); } diff --git a/src/codegen/x86_64/Emit.zig b/src/codegen/x86_64/Emit.zig index 0955a8d91b10ad9687fb522e76db3a03778258f0..eddc1f1b9341485ac0802140bbe0f1efbd08efa7 100644 --- a/src/codegen/x86_64/Emit.zig +++ b/src/codegen/x86_64/Emit.zig @@ -536,14 +536,12 @@ pub fn emitMir(emit: *Emit) Error!void { .column = emit.prev_di_loc.column, .end = true, }), - .pseudo_dbg_arg_none, .pseudo_dbg_arg_i_s, .pseudo_dbg_arg_i_u, .pseudo_dbg_arg_i_64, .pseudo_dbg_arg_ro, .pseudo_dbg_arg_fa, .pseudo_dbg_arg_m, - .pseudo_dbg_var_none, .pseudo_dbg_var_i_s, .pseudo_dbg_var_i_u, .pseudo_dbg_var_i_64, @@ -560,7 +558,6 @@ pub fn emitMir(emit: *Emit) Error!void { var loc_buf: [2]DwarfLoc = undefined; const loc: DwarfLoc = loc: switch (mir_inst.ops) { else => unreachable, - .pseudo_dbg_arg_none, .pseudo_dbg_var_none => .empty, .pseudo_dbg_arg_i_s, .pseudo_dbg_arg_i_u, .pseudo_dbg_var_i_s, @@ -632,23 +629,19 @@ pub fn emitMir(emit: *Emit) Error!void { try dwarf.genLocalVarDebugInfo( switch (mir_inst.ops) { else => unreachable, - .pseudo_dbg_arg_none, .pseudo_dbg_arg_i_s, .pseudo_dbg_arg_i_u, .pseudo_dbg_arg_i_64, .pseudo_dbg_arg_ro, .pseudo_dbg_arg_fa, .pseudo_dbg_arg_m, - .pseudo_dbg_arg_val, => .arg, - .pseudo_dbg_var_none, .pseudo_dbg_var_i_s, .pseudo_dbg_var_i_u, .pseudo_dbg_var_i_64, .pseudo_dbg_var_ro, .pseudo_dbg_var_fa, .pseudo_dbg_var_m, - .pseudo_dbg_var_val, => .local_var, }, local.name.toSlice(&emit.lower.mir), diff --git a/src/codegen/x86_64/Lower.zig b/src/codegen/x86_64/Lower.zig index db93e40a1dd04cf6a2076b06fda4cd64fc2fe017..3763128a7ac707381fb8d54f0d4116658fe959a9 100644 --- a/src/codegen/x86_64/Lower.zig +++ b/src/codegen/x86_64/Lower.zig @@ -320,7 +320,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct { .pseudo_dbg_enter_inline_func, .pseudo_dbg_leave_inline_func, .pseudo_dbg_end_none, - .pseudo_dbg_arg_none, .pseudo_dbg_arg_i_s, .pseudo_dbg_arg_i_u, .pseudo_dbg_arg_i_64, @@ -329,7 +328,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct { .pseudo_dbg_arg_m, .pseudo_dbg_arg_val, .pseudo_dbg_var_args_none, - .pseudo_dbg_var_none, .pseudo_dbg_var_i_s, .pseudo_dbg_var_i_u, .pseudo_dbg_var_i_64, diff --git a/src/codegen/x86_64/Mir.zig b/src/codegen/x86_64/Mir.zig index eb56298da4647617101a8339a89112ec6884e649..1b2d3cb63ebef6d025cb77cc109a4ddce7536e7b 100644 --- a/src/codegen/x86_64/Mir.zig +++ b/src/codegen/x86_64/Mir.zig @@ -1547,9 +1547,6 @@ pub const Inst = struct { /// Uses `none` payload. pseudo_dbg_end_none, /// Local argument. - /// Uses `none` payload. - pseudo_dbg_arg_none, - /// Local argument. /// Uses `i` payload. pseudo_dbg_arg_i_s, /// Local argument. @@ -1573,9 +1570,6 @@ pub const Inst = struct { /// Remaining arguments are varargs. pseudo_dbg_var_args_none, /// Local variable. - /// Uses `none` payload. - pseudo_dbg_var_none, - /// Local variable. /// Uses `i` payload. pseudo_dbg_var_i_s, /// Local variable.