diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-11-09 18:24:38 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-09 18:24:38 -0500 |
| commit | 7afa220f92dc0689116fc74935f6ddb73037f3c2 (patch) | |
| tree | ff0818274a1d4f2af7ce6f4cf6fd51d321addcfc /src/codegen/c.zig | |
| parent | c715d512cbf513bc5a62a4b6022b037ee43900ba (diff) | |
| parent | 684d9532c5ed0f8e213e6163d77d248ceb7393dd (diff) | |
| download | zig-7afa220f92dc0689116fc74935f6ddb73037f3c2.tar.gz zig-7afa220f92dc0689116fc74935f6ddb73037f3c2.zip | |
Merge pull request #10102 from rainbowbismuth/c-while-tests
C backend: while, struct tests, better undefined global handling
Diffstat (limited to 'src/codegen/c.zig')
| -rw-r--r-- | src/codegen/c.zig | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index 5935985961..40f1efbae1 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -448,7 +448,14 @@ pub const DeclGen = struct { try w.writeAll("ZIG_COLD "); } } - try dg.renderType(w, dg.decl.ty.fnReturnType()); + const return_ty = dg.decl.ty.fnReturnType(); + if (return_ty.hasCodeGenBits()) { + try dg.renderType(w, return_ty); + } else if (return_ty.zigTypeTag() == .NoReturn) { + try w.writeAll("zig_noreturn void"); + } else { + try w.writeAll("void"); + } try w.writeAll(" "); try dg.renderDeclName(dg.decl, w); try w.writeAll("("); @@ -947,6 +954,10 @@ pub fn genDecl(o: *Object) !void { } try fwd_decl_writer.writeAll(";\n"); + if (variable.init.isUndef()) { + return; + } + try o.indent_writer.insertNewline(); const w = o.writer(); try o.dg.renderType(w, o.dg.decl.ty); @@ -1886,6 +1897,9 @@ fn airBr(f: *Function, inst: Air.Inst.Index) !CValue { } fn airBitcast(f: *Function, inst: Air.Inst.Index) !CValue { + if (f.liveness.isUnused(inst)) + return CValue.none; + const ty_op = f.air.instructions.items(.data)[inst].ty_op; const operand = try f.resolveInst(ty_op.operand); |
