aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-15 18:37:09 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-10-15 18:37:09 -0700
commit682cdeceaa7f55a14ad88ce01030888a9c18960e (patch)
tree1cc955c9090e9084509831491c70b3bcbdef02b3 /src/Module.zig
parent186126c2a4032424e1b1cdb8ac379fb2beab7429 (diff)
downloadzig-682cdeceaa7f55a14ad88ce01030888a9c18960e.tar.gz
zig-682cdeceaa7f55a14ad88ce01030888a9c18960e.zip
stage2: optional comparison and 0-bit payloads
* Sema: implement peer type resolution for optionals and null. * Rename `Module.optionalType` to `Type.optional`. * LLVM backend: re-use anonymous values. This is especially useful when isByRef()=true because it means re-using the same generated LLVM globals. * LLVM backend: rework the implementation of is_null and is_non_null AIR instructions. Generate slightly better LLVM code, and also fix the behavior for optionals whose payload type is 0-bit. * LLVM backend: improve `cmp` AIR instruction lowering to support pointer-like optionals. * `Value`: implement support for equality-checking optionals.
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig14
1 files changed, 0 insertions, 14 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 5436071fc1..43c0178863 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -4249,20 +4249,6 @@ pub fn errNoteNonLazy(
};
}
-pub fn optionalType(arena: *Allocator, child_type: Type) Allocator.Error!Type {
- switch (child_type.tag()) {
- .single_const_pointer => return Type.Tag.optional_single_const_pointer.create(
- arena,
- child_type.elemType(),
- ),
- .single_mut_pointer => return Type.Tag.optional_single_mut_pointer.create(
- arena,
- child_type.elemType(),
- ),
- else => return Type.Tag.optional.create(arena, child_type),
- }
-}
-
pub fn errorUnionType(
arena: *Allocator,
error_set: Type,