diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-12-02 22:19:12 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-02 22:19:12 -0500 |
| commit | c43ac67f82cb5a022df67729aa1e6bebc22cfff2 (patch) | |
| tree | e8781d33e0a2a1d6510c19d31cdc5ee15ff71f3a /src/codegen/c.zig | |
| parent | af4361f57af388238a075b0c8ef5b34e75b73787 (diff) | |
| parent | 29e8e67a7ec767aed0b9b689bdcad7355c032751 (diff) | |
| download | zig-c43ac67f82cb5a022df67729aa1e6bebc22cfff2.tar.gz zig-c43ac67f82cb5a022df67729aa1e6bebc22cfff2.zip | |
Merge pull request #13746 from ziglang/cbe-bools
CBE: use bool, true, false, instead of `zig_` prefixes
Diffstat (limited to 'src/codegen/c.zig')
| -rw-r--r-- | src/codegen/c.zig | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index d7aec355e9..f4b54cd3aa 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -717,10 +717,21 @@ pub const DeclGen = struct { val = rt.data; } const target = dg.module.getTarget(); + + const safety_on = switch (dg.module.optimizeMode()) { + .Debug, .ReleaseSafe => true, + .ReleaseFast, .ReleaseSmall => false, + }; + if (val.isUndefDeep()) { switch (ty.zigTypeTag()) { - // bool b = 0xaa; evals to true, but memcpy(&b, 0xaa, 1); evals to false. - .Bool => return dg.renderValue(writer, ty, Value.false, location), + .Bool => { + if (safety_on) { + return writer.writeAll("0xaa"); + } else { + return writer.writeAll("false"); + } + }, .Int, .Enum, .ErrorSet => return writer.print("{x}", .{try dg.fmtIntLiteral(ty, val)}), .Float => { const bits = ty.floatBits(target); @@ -1099,7 +1110,13 @@ pub const DeclGen = struct { }, } }, - .Bool => return writer.print("zig_{}", .{val.toBool()}), + .Bool => { + if (val.toBool()) { + return writer.writeAll("true"); + } else { + return writer.writeAll("false"); + } + }, .Optional => { var opt_buf: Type.Payload.ElemType = undefined; const payload_ty = ty.optionalChild(&opt_buf); @@ -1141,8 +1158,10 @@ pub const DeclGen = struct { if (!payload_ty.hasRuntimeBits()) { // We use the error type directly as the type. - const err_val = if (val.errorUnionIsPayload()) Value.initTag(.zero) else val; - return dg.renderValue(writer, error_ty, err_val, location); + if (val.errorUnionIsPayload()) { + return try writer.writeByte('0'); + } + return dg.renderValue(writer, error_ty, val, location); } if (location != .Initializer) { @@ -1802,10 +1821,9 @@ pub const DeclGen = struct { const target = dg.module.getTarget(); switch (t.zigTypeTag()) { - .Void => { - try w.writeAll("void"); - }, - .NoReturn, .Bool, .Float => { + .Void => try w.writeAll("void"), + .Bool => try w.writeAll("bool"), + .NoReturn, .Float => { try w.writeAll("zig_"); try t.print(w, dg.module); }, |
