aboutsummaryrefslogtreecommitdiff
path: root/src/value.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-12-19 15:47:31 -0500
committerGitHub <noreply@github.com>2022-12-19 15:47:31 -0500
commit0fb53bd245e258f69654119e5a1913d6d42dc181 (patch)
treeb2fe08ac32aa43c42cf05d29985c326d20b57994 /src/value.zig
parent3542dbf0ea5bc1ddb1c5e1c856745dc07e6c0a18 (diff)
parent0768115b01f01ab1c75da3e42ffcdc99078eaad2 (diff)
downloadzig-0fb53bd245e258f69654119e5a1913d6d42dc181.tar.gz
zig-0fb53bd245e258f69654119e5a1913d6d42dc181.zip
Merge pull request #14000 from jacobly0/zero-bit-fields
codegen: fix taking the address of a field in a zero-bit struct
Diffstat (limited to 'src/value.zig')
-rw-r--r--src/value.zig12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/value.zig b/src/value.zig
index 839b3d7580..2d676f51d3 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -2915,8 +2915,16 @@ pub const Value = extern union {
.field_ptr => val.castTag(.field_ptr).?.data.container_ptr.isVariable(mod),
.eu_payload_ptr => val.castTag(.eu_payload_ptr).?.data.container_ptr.isVariable(mod),
.opt_payload_ptr => val.castTag(.opt_payload_ptr).?.data.container_ptr.isVariable(mod),
- .decl_ref => mod.declPtr(val.castTag(.decl_ref).?.data).val.isVariable(mod),
- .decl_ref_mut => mod.declPtr(val.castTag(.decl_ref_mut).?.data.decl_index).val.isVariable(mod),
+ .decl_ref => {
+ const decl = mod.declPtr(val.castTag(.decl_ref).?.data);
+ assert(decl.has_tv);
+ return decl.val.isVariable(mod);
+ },
+ .decl_ref_mut => {
+ const decl = mod.declPtr(val.castTag(.decl_ref_mut).?.data.decl_index);
+ assert(decl.has_tv);
+ return decl.val.isVariable(mod);
+ },
.variable => true,
else => false,