| ... | ... | @@ -633,22 +633,24 @@ pub const DeclGen = struct { |
| 633 | 633 | try dg.renderDeclName(dg.decl, w); |
| 634 | 634 | try w.writeAll("("); |
| 635 | 635 | const param_len = dg.decl.ty.fnParamLen(); |
| 636 | | const is_var_args = dg.decl.ty.fnIsVarArgs(); |
| 637 | | if (param_len == 0 and !is_var_args) |
| 638 | | try w.writeAll("void") |
| 639 | | else { |
| 640 | | var index: usize = 0; |
| 641 | | while (index < param_len) : (index += 1) { |
| 642 | | if (index > 0) { |
| 643 | | try w.writeAll(", "); |
| 644 | | } |
| 645 | | try dg.renderType(w, dg.decl.ty.fnParamType(index)); |
| 646 | | try w.print(" a{d}", .{index}); |
| 636 | |
| 637 | var index: usize = 0; |
| 638 | var params_written: usize = 0; |
| 639 | while (index < param_len) : (index += 1) { |
| 640 | if (dg.decl.ty.fnParamType(index).zigTypeTag() == .Void) continue; |
| 641 | if (params_written > 0) { |
| 642 | try w.writeAll(", "); |
| 647 | 643 | } |
| 644 | try dg.renderType(w, dg.decl.ty.fnParamType(index)); |
| 645 | try w.print(" a{d}", .{index}); |
| 646 | params_written += 1; |
| 648 | 647 | } |
| 649 | | if (is_var_args) { |
| 650 | | if (param_len != 0) try w.writeAll(", "); |
| 648 | |
| 649 | if (dg.decl.ty.fnIsVarArgs()) { |
| 650 | if (params_written != 0) try w.writeAll(", "); |
| 651 | 651 | try w.writeAll("..."); |
| 652 | } else if (params_written == 0) { |
| 653 | try w.writeAll("void"); |
| 652 | 654 | } |
| 653 | 655 | try w.writeByte(')'); |
| 654 | 656 | } |
| ... | ... | @@ -670,21 +672,23 @@ pub const DeclGen = struct { |
| 670 | 672 | const name_end = buffer.items.len - 2; |
| 671 | 673 | |
| 672 | 674 | const param_len = fn_info.param_types.len; |
| 673 | | const is_var_args = fn_info.is_var_args; |
| 674 | | if (param_len == 0 and !is_var_args) |
| 675 | | try bw.writeAll("void") |
| 676 | | else { |
| 677 | | var index: usize = 0; |
| 678 | | while (index < param_len) : (index += 1) { |
| 679 | | if (index > 0) { |
| 680 | | try bw.writeAll(", "); |
| 681 | | } |
| 682 | | try dg.renderType(bw, fn_info.param_types[index]); |
| 675 | |
| 676 | var params_written: usize = 0; |
| 677 | var index: usize = 0; |
| 678 | while (index < param_len) : (index += 1) { |
| 679 | if (fn_info.param_types[index].zigTypeTag() == .Void) continue; |
| 680 | if (params_written > 0) { |
| 681 | try bw.writeAll(", "); |
| 683 | 682 | } |
| 683 | try dg.renderType(bw, fn_info.param_types[index]); |
| 684 | params_written += 1; |
| 684 | 685 | } |
| 685 | | if (is_var_args) { |
| 686 | | if (param_len != 0) try bw.writeAll(", "); |
| 686 | |
| 687 | if (fn_info.is_var_args) { |
| 688 | if (params_written != 0) try bw.writeAll(", "); |
| 687 | 689 | try bw.writeAll("..."); |
| 690 | } else if (params_written == 0) { |
| 691 | try bw.writeAll("void"); |
| 688 | 692 | } |
| 689 | 693 | try bw.writeAll(");\n"); |
| 690 | 694 | |
| ... | ... | @@ -1128,13 +1132,11 @@ pub fn genDecl(o: *Object) !void { |
| 1128 | 1132 | if (variable.is_threadlocal) { |
| 1129 | 1133 | try fwd_decl_writer.writeAll("zig_threadlocal "); |
| 1130 | 1134 | } |
| 1131 | | try o.dg.renderType(fwd_decl_writer, o.dg.decl.ty); |
| 1132 | | try fwd_decl_writer.writeAll(" "); |
| 1133 | | if (is_global) { |
| 1134 | | try fwd_decl_writer.writeAll(mem.span(o.dg.decl.name)); |
| 1135 | | } else { |
| 1136 | | try o.dg.renderDeclName(o.dg.decl, fwd_decl_writer); |
| 1137 | | } |
| 1135 | |
| 1136 | const decl_c_value: CValue = if (is_global) .{ .bytes = mem.span(o.dg.decl.name) } |
| 1137 | else .{ .decl = o.dg.decl }; |
| 1138 | |
| 1139 | try o.dg.renderTypeAndName(fwd_decl_writer, o.dg.decl.ty, decl_c_value, .Mut, o.dg.decl.align_val); |
| 1138 | 1140 | try fwd_decl_writer.writeAll(";\n"); |
| 1139 | 1141 | |
| 1140 | 1142 | if (variable.init.isUndefDeep()) { |
| ... | ... | @@ -1143,13 +1145,7 @@ pub fn genDecl(o: *Object) !void { |
| 1143 | 1145 | |
| 1144 | 1146 | try o.indent_writer.insertNewline(); |
| 1145 | 1147 | const w = o.writer(); |
| 1146 | | try o.dg.renderType(w, o.dg.decl.ty); |
| 1147 | | try w.writeAll(" "); |
| 1148 | | if (is_global) { |
| 1149 | | try w.writeAll(mem.span(o.dg.decl.name)); |
| 1150 | | } else { |
| 1151 | | try o.dg.renderDeclName(o.dg.decl, w); |
| 1152 | | } |
| 1148 | try o.dg.renderTypeAndName(w, o.dg.decl.ty, decl_c_value, .Mut, o.dg.decl.align_val); |
| 1153 | 1149 | try w.writeAll(" = "); |
| 1154 | 1150 | if (variable.init.tag() != .unreachable_value) { |
| 1155 | 1151 | try o.dg.renderValue(w, tv.ty, variable.init); |
| ... | ... | @@ -2364,9 +2360,9 @@ fn airBitcast(f: *Function, inst: Air.Inst.Index) !CValue { |
| 2364 | 2360 | try f.writeCValue(writer, local); |
| 2365 | 2361 | try writer.writeAll(", &"); |
| 2366 | 2362 | try f.writeCValue(writer, operand); |
| 2367 | | try writer.writeAll(", sizeof "); |
| 2363 | try writer.writeAll(", sizeof("); |
| 2368 | 2364 | try f.writeCValue(writer, local); |
| 2369 | | try writer.writeAll(");\n"); |
| 2365 | try writer.writeAll("));\n"); |
| 2370 | 2366 | |
| 2371 | 2367 | return local; |
| 2372 | 2368 | } |