Date: Fri, 27 Jan 2023 20:25:48 +0200
Subject: [PATCH 07/10] 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 08/10] 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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
nb2>*6hc?rKBM{@gi#TE!pH5#<#9_|(bNYiK
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