authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-07-20 15:56:42-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-07-20 15:56:42-07:00
logf47cf93b477c47cb4be00019203b2cd11a94d53d
tree65b0f289e214e1ea9ed88ba8f027c1e928d3935e
parent9c652cc6507e6cba9bba5403bd819676f23c93a1

stage2: C backend: fix ret AIR instruction

when operand has 0 runtime bits

1 files changed, 8 insertions(+), 4 deletions(-)

src/codegen/c.zig+8-4
...@@ -1006,11 +1006,15 @@ fn airLoad(o: *Object, inst: Air.Inst.Index) !CValue {...@@ -1006,11 +1006,15 @@ fn airLoad(o: *Object, inst: Air.Inst.Index) !CValue {
10061006
1007fn airRet(o: *Object, inst: Air.Inst.Index) !CValue {1007fn airRet(o: *Object, inst: Air.Inst.Index) !CValue {
1008 const un_op = o.air.instructions.items(.data)[inst].un_op;1008 const un_op = o.air.instructions.items(.data)[inst].un_op;
1009 const operand = try o.resolveInst(un_op);
1010 const writer = o.writer();1009 const writer = o.writer();
1011 try writer.writeAll("return ");1010 if (o.air.typeOf(un_op).hasCodeGenBits()) {
1012 try o.writeCValue(writer, operand);1011 const operand = try o.resolveInst(un_op);
1013 try writer.writeAll(";\n");1012 try writer.writeAll("return ");
1013 try o.writeCValue(writer, operand);
1014 try writer.writeAll(";\n");
1015 } else {
1016 try writer.writeAll("return;\n");
1017 }
1014 return CValue.none;1018 return CValue.none;
1015}1019}
10161020