aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-02-27 16:51:33 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-02-27 16:51:33 -0700
commit9d4cfd9048d71d7519d759b9849914ce154d1877 (patch)
treee28008bbb3ff86babf48fbe4b80d078e9217c2f3 /src/Module.zig
parent71aa5084edd1d3fba5bf8db87c4cf0d03667a566 (diff)
downloadzig-9d4cfd9048d71d7519d759b9849914ce154d1877.tar.gz
zig-9d4cfd9048d71d7519d759b9849914ce154d1877.zip
Sema: resolve necessary information ahead of time
Do the fallible logic in Sema where we have access to error reporting mechanisms, rather than in Type/Value. We can't just do the best guess when resolving queries of "is this type comptime only?" or "what is the ABI alignment of this field?". The result needs to be accurate. So we need to keep the assertions that the data is available active, and instead compute the necessary information before such functions get called. Unfortunately we are stuck with two versions of such functions because the various backends need to be able to ask such queries of Types and Values while assuming the result has already been computed and validated by Sema.
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 9bc61aa708..8fed3138e7 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -1125,6 +1125,8 @@ pub const Union = struct {
abi_align: Value,
/// Returns the field alignment, assuming the union is not packed.
+ /// Keep implementation in sync with `Sema.unionFieldAlignment`.
+ /// Prefer to call that function instead of this one during Sema.
pub fn normalAlignment(field: Field, target: Target) u32 {
if (field.abi_align.tag() == .abi_align_default) {
return field.ty.abiAlignment(target);