authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-04-27 12:20:32-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-04-27 23:30:00-07:00
log8be4511061f18e1bf2b6f7bf108482c6d1e30aa6
tree7965c2d6ef2b74ee087563d410dc69da9bd5d570
parent7bd3207921b3db0b329c397c4dac8b25bd713ff3

C backend: less branching


1 files changed, 3 insertions(+), 15 deletions(-)

src/codegen/c.zig+3-15
...@@ -3348,8 +3348,8 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,...@@ -3348,8 +3348,8 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,
3348 .atomic_load => try airAtomicLoad(f, inst),3348 .atomic_load => try airAtomicLoad(f, inst),
3349 .memset => try airMemset(f, inst, false),3349 .memset => try airMemset(f, inst, false),
3350 .memset_safe => try airMemset(f, inst, true),3350 .memset_safe => try airMemset(f, inst, true),
3351 .memcpy => try airMemcpy(f, inst),3351 .memcpy => try airMemcpy(f, inst, "memcpy("),
3352 .memmove => try airMemmove(f, inst),3352 .memmove => try airMemcpy(f, inst, "memmove("),
3353 .set_union_tag => try airSetUnionTag(f, inst),3353 .set_union_tag => try airSetUnionTag(f, inst),
3354 .get_union_tag => try airGetUnionTag(f, inst),3354 .get_union_tag => try airGetUnionTag(f, inst),
3355 .clz => try airUnBuiltinCall(f, inst, air_datas[@intFromEnum(inst)].ty_op.operand, "clz", .bits),3355 .clz => try airUnBuiltinCall(f, inst, air_datas[@intFromEnum(inst)].ty_op.operand, "clz", .bits),
...@@ -6976,15 +6976,7 @@ fn airMemset(f: *Function, inst: Air.Inst.Index, safety: bool) !CValue {...@@ -6976,15 +6976,7 @@ fn airMemset(f: *Function, inst: Air.Inst.Index, safety: bool) !CValue {
6976 return .none;6976 return .none;
6977}6977}
69786978
6979fn airMemcpy(f: *Function, inst: Air.Inst.Index) !CValue {6979fn airMemcpy(f: *Function, inst: Air.Inst.Index, function_paren: []const u8) !CValue {
6980 return copyOp(f, inst, .memcpy);
6981}
6982
6983fn airMemmove(f: *Function, inst: Air.Inst.Index) !CValue {
6984 return copyOp(f, inst, .memmove);
6985}
6986
6987fn copyOp(f: *Function, inst: Air.Inst.Index, op: enum { memcpy, memmove }) !CValue {
6988 const pt = f.object.dg.pt;6980 const pt = f.object.dg.pt;
6989 const zcu = pt.zcu;6981 const zcu = pt.zcu;
6990 const bin_op = f.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;6982 const bin_op = f.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
...@@ -6999,10 +6991,6 @@ fn copyOp(f: *Function, inst: Air.Inst.Index, op: enum { memcpy, memmove }) !CVa...@@ -6999,10 +6991,6 @@ fn copyOp(f: *Function, inst: Air.Inst.Index, op: enum { memcpy, memmove }) !CVa
6999 try writeArrayLen(f, writer, dest_ptr, dest_ty);6991 try writeArrayLen(f, writer, dest_ptr, dest_ty);
7000 try writer.writeAll(" != 0) ");6992 try writer.writeAll(" != 0) ");
7001 }6993 }
7002 const function_paren = switch (op) {
7003 .memcpy => "memcpy(",
7004 .memmove => "memmove(",
7005 };
7006 try writer.writeAll(function_paren);6994 try writer.writeAll(function_paren);
7007 try writeSliceOrPtr(f, writer, dest_ptr, dest_ty);6995 try writeSliceOrPtr(f, writer, dest_ptr, dest_ty);
7008 try writer.writeAll(", ");6996 try writer.writeAll(", ");