Date: Fri, 27 Jan 2023 20:25:48 +0200
Subject: [PATCH 08/65] implement `@qualCast`
---
doc/langref.html.in | 15 +++--
lib/std/child_process.zig | 4 +-
lib/std/fs.zig | 2 +-
lib/std/os.zig | 2 +-
lib/std/os/windows.zig | 14 ++---
lib/std/zig/c_translation.zig | 2 +-
src/AstGen.zig | 2 +
src/BuiltinFn.zig | 8 +++
src/Sema.zig | 62 ++++++++++++++++++-
src/Zir.zig | 6 ++
src/print_zir.zig | 1 +
.../cases/compile_errors/invalid_qualcast.zig | 12 ++++
.../ptrCast_discards_const_qualifier.zig | 1 +
13 files changed, 113 insertions(+), 18 deletions(-)
create mode 100644 test/cases/compile_errors/invalid_qualcast.zig
diff --git a/doc/langref.html.in b/doc/langref.html.in
index e1521795ca..8c7781ee42 100644
--- a/doc/langref.html.in
+++ b/doc/langref.html.in
@@ -8803,10 +8803,10 @@ pub const PrefetchOptions = struct {
{#syntax#}@ptrCast{#endsyntax#} cannot be used for:
- - Removing {#syntax#}const{#endsyntax#} or {#syntax#}volatile{#endsyntax#} qualifier. TODO add a {#syntax#}@qualCast{#endsyntax#} builtin.
- - Changing pointer address space, use {#link|@addrSpaceCast#}
- - Increasing pointer alignment, use {#link|@alignCast#}
- - Casting a non-slice pointer to a slice, use slicing syntax {#syntax#}ptr[start..end]{#endsyntax#}
+ - Removing {#syntax#}const{#endsyntax#} or {#syntax#}volatile{#endsyntax#} qualifier, use {#link|@qualCast#}.
+ - Changing pointer address space, use {#link|@addrSpaceCast#}.
+ - Increasing pointer alignment, use {#link|@alignCast#}.
+ - Casting a non-slice pointer to a slice, use slicing syntax {#syntax#}ptr[start..end]{#endsyntax#}.
{#header_close#}
@@ -8820,6 +8820,13 @@ pub const PrefetchOptions = struct {
{#header_close#}
+ {#header_open|@qualCast#}
+ {#syntax#}@qualCast(comptime DestType: type, value: anytype) DestType{#endsyntax#}
+
+ Remove {#syntax#}const{#endsyntax#} or {#syntax#}volatile{#endsyntax#} qualifier from a pointer.
+
+ {#header_close#}
+
{#header_open|@rem#}
{#syntax#}@rem(numerator: T, denominator: T) T{#endsyntax#}
diff --git a/lib/std/child_process.zig b/lib/std/child_process.zig
index 4a816c8318..21d7b4fe3e 100644
--- a/lib/std/child_process.zig
+++ b/lib/std/child_process.zig
@@ -1164,7 +1164,7 @@ fn windowsCreateProcessPathExt(
var app_name_unicode_string = windows.UNICODE_STRING{
.Length = app_name_len_bytes,
.MaximumLength = app_name_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(app_name_wildcard.ptr)),
+ .Buffer = @qualCast([*:0]u16, app_name_wildcard.ptr),
};
const rc = windows.ntdll.NtQueryDirectoryFile(
dir.fd,
@@ -1261,7 +1261,7 @@ fn windowsCreateProcessPathExt(
var app_name_unicode_string = windows.UNICODE_STRING{
.Length = app_name_len_bytes,
.MaximumLength = app_name_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(app_name_appended.ptr)),
+ .Buffer = @qualCast([*:0]u16, app_name_appended.ptr),
};
// Re-use the directory handle but this time we call with the appended app name
diff --git a/lib/std/fs.zig b/lib/std/fs.zig
index 244f3a38ce..2300ad044a 100644
--- a/lib/std/fs.zig
+++ b/lib/std/fs.zig
@@ -1763,7 +1763,7 @@ pub const Dir = struct {
var nt_name = w.UNICODE_STRING{
.Length = path_len_bytes,
.MaximumLength = path_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(sub_path_w)),
+ .Buffer = @qualCast([*:0]u16, sub_path_w),
};
var attr = w.OBJECT_ATTRIBUTES{
.Length = @sizeOf(w.OBJECT_ATTRIBUTES),
diff --git a/lib/std/os.zig b/lib/std/os.zig
index 32463aa30e..3cee30c32d 100644
--- a/lib/std/os.zig
+++ b/lib/std/os.zig
@@ -4513,7 +4513,7 @@ pub fn faccessatW(dirfd: fd_t, sub_path_w: [*:0]const u16, mode: u32, flags: u32
var nt_name = windows.UNICODE_STRING{
.Length = path_len_bytes,
.MaximumLength = path_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(sub_path_w)),
+ .Buffer = @qualCast([*:0]u16, sub_path_w),
};
var attr = windows.OBJECT_ATTRIBUTES{
.Length = @sizeOf(windows.OBJECT_ATTRIBUTES),
diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig
index e53387b27c..93e762827b 100644
--- a/lib/std/os/windows.zig
+++ b/lib/std/os/windows.zig
@@ -85,7 +85,7 @@ pub fn OpenFile(sub_path_w: []const u16, options: OpenFileOptions) OpenError!HAN
var nt_name = UNICODE_STRING{
.Length = path_len_bytes,
.MaximumLength = path_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(sub_path_w.ptr)),
+ .Buffer = @qualCast([*]u16, sub_path_w.ptr),
};
var attr = OBJECT_ATTRIBUTES{
.Length = @sizeOf(OBJECT_ATTRIBUTES),
@@ -634,7 +634,7 @@ pub fn SetCurrentDirectory(path_name: []const u16) SetCurrentDirectoryError!void
var nt_name = UNICODE_STRING{
.Length = path_len_bytes,
.MaximumLength = path_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(path_name.ptr)),
+ .Buffer = @qualCast([*]u16, path_name.ptr),
};
const rc = ntdll.RtlSetCurrentDirectory_U(&nt_name);
@@ -766,7 +766,7 @@ pub fn ReadLink(dir: ?HANDLE, sub_path_w: []const u16, out_buffer: []u8) ReadLin
var nt_name = UNICODE_STRING{
.Length = path_len_bytes,
.MaximumLength = path_len_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(sub_path_w.ptr)),
+ .Buffer = @qualCast([*]u16, sub_path_w.ptr),
};
var attr = OBJECT_ATTRIBUTES{
.Length = @sizeOf(OBJECT_ATTRIBUTES),
@@ -876,7 +876,7 @@ pub fn DeleteFile(sub_path_w: []const u16, options: DeleteFileOptions) DeleteFil
.Length = path_len_bytes,
.MaximumLength = path_len_bytes,
// The Windows API makes this mutable, but it will not mutate here.
- .Buffer = @intToPtr([*]u16, @ptrToInt(sub_path_w.ptr)),
+ .Buffer = @qualCast([*]u16, sub_path_w.ptr),
};
if (sub_path_w[0] == '.' and sub_path_w[1] == 0) {
@@ -1414,7 +1414,7 @@ pub fn sendmsg(
}
pub fn sendto(s: ws2_32.SOCKET, buf: [*]const u8, len: usize, flags: u32, to: ?*const ws2_32.sockaddr, to_len: ws2_32.socklen_t) i32 {
- var buffer = ws2_32.WSABUF{ .len = @truncate(u31, len), .buf = @intToPtr([*]u8, @ptrToInt(buf)) };
+ var buffer = ws2_32.WSABUF{ .len = @truncate(u31, len), .buf = @qualCast([*]u8, buf) };
var bytes_send: DWORD = undefined;
if (ws2_32.WSASendTo(s, @ptrCast([*]ws2_32.WSABUF, &buffer), 1, &bytes_send, flags, to, @intCast(i32, to_len), null, null) == ws2_32.SOCKET_ERROR) {
return ws2_32.SOCKET_ERROR;
@@ -1876,13 +1876,13 @@ pub fn eqlIgnoreCaseWTF16(a: []const u16, b: []const u16) bool {
const a_string = UNICODE_STRING{
.Length = a_bytes,
.MaximumLength = a_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(a.ptr)),
+ .Buffer = @qualCast([*]u16, a.ptr),
};
const b_bytes = @intCast(u16, b.len * 2);
const b_string = UNICODE_STRING{
.Length = b_bytes,
.MaximumLength = b_bytes,
- .Buffer = @intToPtr([*]u16, @ptrToInt(b.ptr)),
+ .Buffer = @qualCast([*]u16, b.ptr),
};
return ntdll.RtlEqualUnicodeString(&a_string, &b_string, TRUE) == TRUE;
}
diff --git a/lib/std/zig/c_translation.zig b/lib/std/zig/c_translation.zig
index a050e592a2..d33c74d777 100644
--- a/lib/std/zig/c_translation.zig
+++ b/lib/std/zig/c_translation.zig
@@ -75,7 +75,7 @@ fn castPtr(comptime DestType: type, target: anytype) DestType {
const source = ptrInfo(@TypeOf(target));
if (source.is_const and !dest.is_const or source.is_volatile and !dest.is_volatile)
- return @intToPtr(DestType, @ptrToInt(target))
+ return @qualCast(DestType, target)
else if (@typeInfo(dest.child) == .Opaque)
// dest.alignment would error out
return @ptrCast(DestType, target)
diff --git a/src/AstGen.zig b/src/AstGen.zig
index df111906e6..a5667ce9e8 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -2530,6 +2530,7 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
.bit_size_of,
.typeof_log2_int_type,
.ptr_to_int,
+ .qual_cast,
.align_of,
.bool_to_int,
.embed_file,
@@ -8037,6 +8038,7 @@ fn builtinCall(
.float_cast => return typeCast(gz, scope, ri, node, params[0], params[1], .float_cast),
.int_cast => return typeCast(gz, scope, ri, node, params[0], params[1], .int_cast),
.ptr_cast => return typeCast(gz, scope, ri, node, params[0], params[1], .ptr_cast),
+ .qual_cast => return typeCast(gz, scope, ri, node, params[0], params[1], .qual_cast),
.truncate => return typeCast(gz, scope, ri, node, params[0], params[1], .truncate),
// zig fmt: on
diff --git a/src/BuiltinFn.zig b/src/BuiltinFn.zig
index b71d96c3dd..80eb739185 100644
--- a/src/BuiltinFn.zig
+++ b/src/BuiltinFn.zig
@@ -75,6 +75,7 @@ pub const Tag = enum {
prefetch,
ptr_cast,
ptr_to_int,
+ qual_cast,
rem,
return_address,
select,
@@ -674,6 +675,13 @@ pub const list = list: {
.param_count = 1,
},
},
+ .{
+ "@qualCast",
+ .{
+ .tag = .qual_cast,
+ .param_count = 2,
+ },
+ },
.{
"@rem",
.{
diff --git a/src/Sema.zig b/src/Sema.zig
index b4731d9509..d306c68e08 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -1015,6 +1015,7 @@ fn analyzeBodyInner(
.float_cast => try sema.zirFloatCast(block, inst),
.int_cast => try sema.zirIntCast(block, inst),
.ptr_cast => try sema.zirPtrCast(block, inst),
+ .qual_cast => try sema.zirQualCast(block, inst),
.truncate => try sema.zirTruncate(block, inst),
.align_cast => try sema.zirAlignCast(block, inst),
.has_decl => try sema.zirHasDecl(block, inst),
@@ -19529,10 +19530,24 @@ fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
const operand_info = operand_ty.ptrInfo().data;
const dest_info = dest_ty.ptrInfo().data;
if (!operand_info.mutable and dest_info.mutable) {
- return sema.fail(block, src, "cast discards const qualifier", .{});
+ const msg = msg: {
+ const msg = try sema.errMsg(block, src, "cast discards const qualifier", .{});
+ errdefer msg.destroy(sema.gpa);
+
+ try sema.errNote(block, src, msg, "consider using '@qualCast'", .{});
+ break :msg msg;
+ };
+ return sema.failWithOwnedErrorMsg(msg);
}
if (operand_info.@"volatile" and !dest_info.@"volatile") {
- return sema.fail(block, src, "cast discards volatile qualifier", .{});
+ const msg = msg: {
+ const msg = try sema.errMsg(block, src, "cast discards volatile qualifier", .{});
+ errdefer msg.destroy(sema.gpa);
+
+ try sema.errNote(block, src, msg, "consider using '@qualCast'", .{});
+ break :msg msg;
+ };
+ return sema.failWithOwnedErrorMsg(msg);
}
if (operand_info.@"addrspace" != dest_info.@"addrspace") {
const msg = msg: {
@@ -19634,6 +19649,49 @@ fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
return block.addBitCast(aligned_dest_ty, ptr);
}
+fn zirQualCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
+ const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
+ const src = inst_data.src();
+ const dest_ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
+ const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
+ const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
+ const dest_ty = try sema.resolveType(block, dest_ty_src, extra.lhs);
+ const operand = try sema.resolveInst(extra.rhs);
+ const operand_ty = sema.typeOf(operand);
+
+ try sema.checkPtrType(block, dest_ty_src, dest_ty);
+ try sema.checkPtrOperand(block, operand_src, operand_ty);
+
+ var operand_payload = operand_ty.ptrInfo();
+ var dest_info = dest_ty.ptrInfo();
+
+ operand_payload.data.mutable = dest_info.data.mutable;
+ operand_payload.data.@"volatile" = dest_info.data.@"volatile";
+
+ const altered_operand_ty = Type.initPayload(&operand_payload.base);
+ if (!altered_operand_ty.eql(dest_ty, sema.mod)) {
+ const msg = msg: {
+ const msg = try sema.errMsg(block, src, "'@qualCast' can only modify 'const' and 'volatile' qualifiers", .{});
+ errdefer msg.destroy(sema.gpa);
+
+ dest_info.data.mutable = !operand_ty.isConstPtr();
+ dest_info.data.@"volatile" = operand_ty.isVolatilePtr();
+ const altered_dest_ty = Type.initPayload(&dest_info.base);
+ try sema.errNote(block, src, msg, "expected type '{}'", .{altered_dest_ty.fmt(sema.mod)});
+ try sema.errNote(block, src, msg, "got type '{}'", .{operand_ty.fmt(sema.mod)});
+ break :msg msg;
+ };
+ return sema.failWithOwnedErrorMsg(msg);
+ }
+
+ if (try sema.resolveMaybeUndefVal(operand)) |operand_val| {
+ return sema.addConstant(dest_ty, operand_val);
+ }
+
+ try sema.requireRuntimeBlock(block, src, null);
+ return block.addBitCast(dest_ty, operand);
+}
+
fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
const src = inst_data.src();
diff --git a/src/Zir.zig b/src/Zir.zig
index 94e6a9a11a..b93422177e 100644
--- a/src/Zir.zig
+++ b/src/Zir.zig
@@ -857,6 +857,9 @@ pub const Inst = struct {
/// Implements the `@ptrCast` builtin.
/// Uses `pl_node` with payload `Bin`. `lhs` is dest type, `rhs` is operand.
ptr_cast,
+ /// Implements the `@qualCast` builtin.
+ /// Uses `pl_node` with payload `Bin`. `lhs` is dest type, `rhs` is operand.
+ qual_cast,
/// Implements the `@truncate` builtin.
/// Uses `pl_node` with payload `Bin`. `lhs` is dest type, `rhs` is operand.
truncate,
@@ -1195,6 +1198,7 @@ pub const Inst = struct {
.float_cast,
.int_cast,
.ptr_cast,
+ .qual_cast,
.truncate,
.align_cast,
.has_field,
@@ -1484,6 +1488,7 @@ pub const Inst = struct {
.float_cast,
.int_cast,
.ptr_cast,
+ .qual_cast,
.truncate,
.align_cast,
.has_field,
@@ -1755,6 +1760,7 @@ pub const Inst = struct {
.float_cast = .pl_node,
.int_cast = .pl_node,
.ptr_cast = .pl_node,
+ .qual_cast = .pl_node,
.truncate = .pl_node,
.align_cast = .pl_node,
.typeof_builtin = .pl_node,
diff --git a/src/print_zir.zig b/src/print_zir.zig
index 6e8923bed9..e5fc8815ed 100644
--- a/src/print_zir.zig
+++ b/src/print_zir.zig
@@ -332,6 +332,7 @@ const Writer = struct {
.float_cast,
.int_cast,
.ptr_cast,
+ .qual_cast,
.truncate,
.align_cast,
.div_exact,
diff --git a/test/cases/compile_errors/invalid_qualcast.zig b/test/cases/compile_errors/invalid_qualcast.zig
new file mode 100644
index 0000000000..20b223b727
--- /dev/null
+++ b/test/cases/compile_errors/invalid_qualcast.zig
@@ -0,0 +1,12 @@
+pub export fn entry() void {
+ var a: [*:0]const volatile u16 = undefined;
+ _ = @qualCast([*]u16, a);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:9: error: '@qualCast' can only modify 'const' and 'volatile' qualifiers
+// :3:9: note: expected type '[*]const volatile u16'
+// :3:9: note: got type '[*:0]const volatile u16'
diff --git a/test/cases/compile_errors/ptrCast_discards_const_qualifier.zig b/test/cases/compile_errors/ptrCast_discards_const_qualifier.zig
index a2fea4ff11..eedef01234 100644
--- a/test/cases/compile_errors/ptrCast_discards_const_qualifier.zig
+++ b/test/cases/compile_errors/ptrCast_discards_const_qualifier.zig
@@ -9,3 +9,4 @@ export fn entry() void {
// target=native
//
// :3:15: error: cast discards const qualifier
+// :3:15: note: consider using '@qualCast'
From f3bb1957fa7f317873584cfc0ea8e3fd59283ec2 Mon Sep 17 00:00:00 2001
From: Veikka Tuominen
Date: Sun, 29 Jan 2023 23:39:03 +0200
Subject: [PATCH 09/65] update zig1.wasm to include `@qualCast`
---
stage1/zig1.wasm | Bin 2369157 -> 2373912 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/stage1/zig1.wasm b/stage1/zig1.wasm
index e64e05fa1300ae7254391cbb74786b55abd1e48b..ef7d7891c9aef6a9f65ea39fed25ecb815a38f9d 100644
GIT binary patch
delta 437132
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