aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authormlugg <mlugg@mlugg.co.uk>2023-08-19 02:35:00 +0100
committerAndrew Kelley <andrew@ziglang.org>2023-08-20 11:58:14 -0700
commit7a85ad151daece3d0bba3c8d23081502a0956c95 (patch)
tree4f11b16bdf5c0ae231df3b5463b32074389797b5 /src/codegen
parent51f6438e076c0347197c251716174037a8465e91 (diff)
downloadzig-7a85ad151daece3d0bba3c8d23081502a0956c95.tar.gz
zig-7a85ad151daece3d0bba3c8d23081502a0956c95.zip
cbe: elide block result allocation for 0-bit types
This logic already existed for the void type, but is also necessary for other 0-bit types. Without it, we try to alloc a local for a 0-bit type which gets translated to a local of type `void` which C doesn't like.
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/c.zig2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index bea3c02985..330a9b33e8 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -4285,7 +4285,7 @@ fn airBlock(f: *Function, inst: Air.Inst.Index) !CValue {
const writer = f.object.writer();
const inst_ty = f.typeOfIndex(inst);
- const result = if (inst_ty.ip_index != .void_type and !f.liveness.isUnused(inst))
+ const result = if (inst_ty.hasRuntimeBitsIgnoreComptime(mod) and !f.liveness.isUnused(inst))
try f.allocLocal(inst, inst_ty)
else
.none;