diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-11-09 22:58:27 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-11-09 23:01:35 -0700 |
| commit | cb785b9c6ba705fcb507fdfa470e27b5e82ce1c5 (patch) | |
| tree | 59bd1aa803f9669ba434aa7e7890c8c5cd283055 /lib/std/os/linux/powerpc.zig | |
| parent | 008b0ec5e58fc7e31f3b989868a7d1ea4df3f41d (diff) | |
| download | zig-cb785b9c6ba705fcb507fdfa470e27b5e82ce1c5.tar.gz zig-cb785b9c6ba705fcb507fdfa470e27b5e82ce1c5.zip | |
Sema: implement coerce_result_ptr for optionals
New AIR instruction: `optional_payload_ptr_set`
It's like `optional_payload_ptr` except it sets the non-null bit.
When storing to the payload via a result location that is an optional,
`optional_payload_ptr_set` is now emitted. There is a new algorithm in
`zirCoerceResultPtr` which stores a dummy value through the result
pointer into a temporary block, and then pops off the AIR instructions
from the temporary block in order to determine how to transform the
result location pointer in case any in-between coercions need to happen.
Fixes a couple of behavior tests regarding optionals.
Diffstat (limited to 'lib/std/os/linux/powerpc.zig')
0 files changed, 0 insertions, 0 deletions
