Commit 3b501b2d81

Jacob Young <jacobly0@users.noreply.github.com>
2022-10-06 06:54:45
c: cast NULL in advance to avoid comparison warnings
1 parent 4973296
Changed files (1)
src
codegen
src/codegen/c.zig
@@ -655,11 +655,11 @@ pub const DeclGen = struct {
                 return dg.fail("TODO: C backend: implement lowering large float values", .{});
             },
             .Pointer => switch (val.tag()) {
-                .null_value => try writer.writeAll("NULL"),
-                // Technically this should produce NULL but the integer literal 0 will always coerce
-                // to the assigned pointer type. Note this is just a hack to fix warnings from ordered comparisons (<, >, etc)
-                // between pointers and 0, which is an extension to begin with.
-                .zero => try writer.writeByte('0'),
+                .null_value, .zero => {
+                    try writer.writeAll("((");
+                    try dg.renderTypecast(writer, ty);
+                    try writer.writeAll(")NULL)");
+                },
                 .variable => {
                     const decl = val.castTag(.variable).?.data.owner_decl;
                     return dg.renderDeclValue(writer, ty, val, decl);