diff options
| author | mlugg <mlugg@mlugg.co.uk> | 2025-07-29 10:04:15 +0100 |
|---|---|---|
| committer | mlugg <mlugg@mlugg.co.uk> | 2025-07-29 15:52:19 +0100 |
| commit | a8888afcc07479bf779105f977597b29aea3c28f (patch) | |
| tree | ad34e4c4b6fd0864ef6bd1cee22c2abb156f9414 /lib/libc/include/mips-linux-gnu/bits/termios-struct.h | |
| parent | 3fbdd58a874c6b4dae84bed2ed31c945ff4adb54 (diff) | |
| download | zig-a8888afcc07479bf779105f977597b29aea3c28f.tar.gz zig-a8888afcc07479bf779105f977597b29aea3c28f.zip | |
Sema: remove redundant comptime-known initializer tracking
This logic predates certain Sema enhancements whose behavior it
essentially tries to emulate in one specific case in a problematic way.
In particular, this logic handled initializing comptime-known `const`s
through RLS, which was reworked a few years back in 644041b to not rely
on this logic, and catching runtime fields in comptime-only
initializers, which has since been *correctly* fixed with better checks
in `Sema.storePtr2`. That made the highly complex logic in
`validateStructInit`, `validateUnionInit`, and `zirValidatePtrArrayInit`
entirely redundant. Worse, it was also causing some tracked bugs, as
well as a bug which I have identified and fixed in this PR (a
corresponding behavior test is added).
This commit simplifies union initialization by bringing the runtime
logic more in line with the comptime logic: the tag is now always
populated by `Sema.unionFieldPtr` based on `initializing`, where this
previously happened only in the comptime case (with `validateUnionInit`
instead handling it in the runtime case). Notably, this means that
backends are now able to consider getting a pointer to an inactive union
field as Illegal Behavior, because the `set_union_tag` instruction now
appears *before* the `struct_field_ptr` instruction as you would
probably expect it to.
Resolves: #24520
Resolves: #24595
Diffstat (limited to 'lib/libc/include/mips-linux-gnu/bits/termios-struct.h')
0 files changed, 0 insertions, 0 deletions
