diff --git a/crates/rustc_codegen_spirv/build.rs b/crates/rustc_codegen_spirv/build.rs index aac4b88bb24..61b397a4f8e 100644 --- a/crates/rustc_codegen_spirv/build.rs +++ b/crates/rustc_codegen_spirv/build.rs @@ -19,9 +19,9 @@ use std::{env, fs, mem}; /// `cargo publish`. We need to figure out a way to do this properly, but let's hardcode it for now :/ //const REQUIRED_RUST_TOOLCHAIN: &str = include_str!("../../rust-toolchain.toml"); const REQUIRED_RUST_TOOLCHAIN: &str = r#"[toolchain] -channel = "nightly-2026-03-14" +channel = "nightly-2026-04-01" components = ["rust-src", "rustc-dev", "llvm-tools"] -# commit_hash = 1d8897a4e88051480b36c501e66809425c6e08ad"#; +# commit_hash = 48cc71ee88cd0f11217eced958b9930970da998b"#; fn rustc_output(arg: &str) -> Result> { let rustc = env::var("RUSTC").unwrap_or_else(|_| "rustc".into()); diff --git a/crates/rustc_codegen_spirv/src/builder/intrinsics.rs b/crates/rustc_codegen_spirv/src/builder/intrinsics.rs index f8b418cf98f..970d9571c78 100644 --- a/crates/rustc_codegen_spirv/src/builder/intrinsics.rs +++ b/crates/rustc_codegen_spirv/src/builder/intrinsics.rs @@ -193,15 +193,13 @@ impl<'a, 'tcx> IntrinsicCallBuilderMethods<'tcx> for Builder<'a, 'tcx> { args[2].immediate(), ], ), - sym::fabsf32 | sym::fabsf64 | sym::fabsf128 => { - self.gl_op(GLOp::FAbs, ret_ty, [args[0].immediate()]) - } - sym::minnumf32 | sym::minnumf64 | sym::minnumf128 => self.gl_op( + sym::fabs => self.gl_op(GLOp::FAbs, ret_ty, [args[0].immediate()]), + sym::minimumf32 | sym::minimumf64 | sym::minimumf128 => self.gl_op( GLOp::FMin, ret_ty, [args[0].immediate(), args[1].immediate()], ), - sym::maxnumf32 | sym::maxnumf64 | sym::maxnumf128 => self.gl_op( + sym::maximumf32 | sym::maximumf64 | sym::maximumf128 => self.gl_op( GLOp::FMax, ret_ty, [args[0].immediate(), args[1].immediate()], diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 9c112af43f5..af87db17967 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,7 +1,7 @@ [toolchain] -channel = "nightly-2026-03-14" +channel = "nightly-2026-04-01" components = ["rust-src", "rustc-dev", "llvm-tools"] -# commit_hash = 1d8897a4e88051480b36c501e66809425c6e08ad +# commit_hash = 48cc71ee88cd0f11217eced958b9930970da998b # Whenever changing the nightly channel, update the commit hash above, and # change `REQUIRED_RUST_TOOLCHAIN` in `crates/rustc_codegen_spirv/build.rs` too. diff --git a/tests/compiletests/ui/arch/debug_printf_type_checking.stderr b/tests/compiletests/ui/arch/debug_printf_type_checking.stderr index 126cadfecb1..dbaef7cf3c5 100644 --- a/tests/compiletests/ui/arch/debug_printf_type_checking.stderr +++ b/tests/compiletests/ui/arch/debug_printf_type_checking.stderr @@ -114,19 +114,14 @@ error[E0277]: the trait bound `{float}: spirv_std::Vector` is not satisf LL | debug_printf!("%v2f", 11.0); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `spirv_std::Vector` is not implemented for `{float}` | - = help: the following other types implement trait `spirv_std::Vector`: - `BVec2` implements `spirv_std::Vector` - `BVec3` implements `spirv_std::Vector` - `BVec4` implements `spirv_std::Vector` - `DVec2` implements `spirv_std::Vector` - `DVec3` implements `spirv_std::Vector` - `DVec4` implements `spirv_std::Vector` - `IVec2` implements `spirv_std::Vector` - `IVec3` implements `spirv_std::Vector` - and 8 others +help: the trait `spirv_std::Vector` is implemented for `Vec2` + --> $SPIRV_STD_SRC/vector.rs:70:12 + ::: $SPIRV_STD_SRC/vector.rs:92:1 + | + = note: in this macro invocation note: required by a bound in `spirv_std::debug_printf::assert_is_vector` --> $SPIRV_STD_SRC/debug_printf.rs:11:0 - = note: this error originates in the macro `debug_printf` (in Nightly builds, run with -Z macro-backtrace for more info) + = note: this error originates in the macro `debug_printf` which comes from the expansion of the macro `impl_vector` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0308]: mismatched types --> $DIR/debug_printf_type_checking.rs:25:29 diff --git a/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr b/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr index 7c4cd4db215..2dd54ee5830 100644 --- a/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr +++ b/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr @@ -52,13 +52,13 @@ error[E0277]: the trait bound `i32: From` is not satisfied LL | #[derive(Copy, Clone, Default, ScalarComposite)] | ^^^^^^^^^^^^^^^ the trait `From` is not implemented for `i32` | - = help: the following other types implement trait `From`: - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` + = help: `i32` implements trait `From`: + From + From + From + From + From + From = note: required for `NoFrom` to implement `Into` = note: this error originates in the derive macro `ScalarComposite` (in Nightly builds, run with -Z macro-backtrace for more info) @@ -86,24 +86,24 @@ error[E0277]: the trait bound `i32: From` is not satisfied LL | #[derive(Copy, Clone, Default, ScalarComposite)] | ^^^^^^^^^^^^^^^ the trait `From` is not implemented for `i32` | - = help: the following other types implement trait `From`: - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` - `i32` implements `From` + = help: `i32` implements trait `From`: + From + From + From + From + From + From = note: required for `WrongFrom` to implement `Into` = note: this error originates in the derive macro `ScalarComposite` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: no variant or associated item named `default` found for enum `NoDefault` in the current scope +error[E0599]: no variant, associated function, or constant named `default` found for enum `NoDefault` in the current scope --> $DIR/subgroup_composite_enum_err.rs: | LL | _ => Self::default(), - | ^^^^^^^ variant or associated item not found in `NoDefault` + | ^^^^^^^ variant, associated function, or constant not found in `NoDefault` ... LL | pub enum NoDefault { - | ------------------ variant or associated item `default` not found for this enum + | ------------------ variant, associated function, or constant `default` not found for this enum ... LL | enum_repr_from!(NoDefault, i32); | ------------------------------- in this macro invocation diff --git a/tests/compiletests/ui/dis/ptr_copy.normal.stderr b/tests/compiletests/ui/dis/ptr_copy.normal.stderr index e4fd211dcca..19d024d7e82 100644 --- a/tests/compiletests/ui/dis/ptr_copy.normal.stderr +++ b/tests/compiletests/ui/dis/ptr_copy.normal.stderr @@ -1,11 +1,11 @@ error: cannot memcpy dynamically sized data - --> <$CORE_SRC/ptr/mod.rs>:642:9 + --> <$CORE_SRC/ptr/mod.rs>:643:9 | LL | crate::intrinsics::copy(src, dst, count) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: used from within `core::ptr::copy::` - --> <$CORE_SRC/ptr/mod.rs>:627:21 + --> <$CORE_SRC/ptr/mod.rs>:628:21 | LL | pub const unsafe fn copy(src: *const T, dst: *mut T, count: usize) { | ^^^^ @@ -28,7 +28,7 @@ LL | pub fn main(i: f32, o: &mut f32) { error: cannot cast between pointer types from `*f32` to `*struct () { }` - --> <$CORE_SRC/ptr/mod.rs>:630:9 + --> <$CORE_SRC/ptr/mod.rs>:631:9 | LL | / ub_checks::assert_unsafe_precondition!( LL | | check_language_ub, @@ -39,7 +39,7 @@ LL | | ); | |_________^ | note: used from within `core::ptr::copy::` - --> <$CORE_SRC/ptr/mod.rs>:630:9 + --> <$CORE_SRC/ptr/mod.rs>:631:9 | LL | / ub_checks::assert_unsafe_precondition!( LL | | check_language_ub, diff --git a/tests/compiletests/ui/dis/ptr_read.stderr b/tests/compiletests/ui/dis/ptr_read.stderr index cc38b41e3de..0837ee51096 100644 --- a/tests/compiletests/ui/dis/ptr_read.stderr +++ b/tests/compiletests/ui/dis/ptr_read.stderr @@ -2,7 +2,7 @@ %4 = OpFunctionParameter %5 %6 = OpFunctionParameter %5 %7 = OpLabel -OpLine %8 1720 8 +OpLine %8 1721 8 %9 = OpLoad %10 %4 OpLine %11 7 13 OpStore %6 %9 diff --git a/tests/compiletests/ui/dis/ptr_read_method.stderr b/tests/compiletests/ui/dis/ptr_read_method.stderr index cc38b41e3de..0837ee51096 100644 --- a/tests/compiletests/ui/dis/ptr_read_method.stderr +++ b/tests/compiletests/ui/dis/ptr_read_method.stderr @@ -2,7 +2,7 @@ %4 = OpFunctionParameter %5 %6 = OpFunctionParameter %5 %7 = OpLabel -OpLine %8 1720 8 +OpLine %8 1721 8 %9 = OpLoad %10 %4 OpLine %11 7 13 OpStore %6 %9 diff --git a/tests/compiletests/ui/dis/ptr_write.stderr b/tests/compiletests/ui/dis/ptr_write.stderr index 2efd1f59fa2..4089a164123 100644 --- a/tests/compiletests/ui/dis/ptr_write.stderr +++ b/tests/compiletests/ui/dis/ptr_write.stderr @@ -4,7 +4,7 @@ %7 = OpLabel OpLine %8 7 35 %9 = OpLoad %10 %4 -OpLine %11 1920 40 +OpLine %11 1921 40 OpStore %6 %9 OpNoLine OpReturn diff --git a/tests/compiletests/ui/dis/ptr_write_method.stderr b/tests/compiletests/ui/dis/ptr_write_method.stderr index 296a00f49f2..cbf244718b5 100644 --- a/tests/compiletests/ui/dis/ptr_write_method.stderr +++ b/tests/compiletests/ui/dis/ptr_write_method.stderr @@ -4,7 +4,7 @@ %7 = OpLabel OpLine %8 7 37 %9 = OpLoad %10 %4 -OpLine %11 1920 40 +OpLine %11 1921 40 OpStore %6 %9 OpNoLine OpReturn diff --git a/tests/compiletests/ui/lang/consts/u32-from-u64-fail.stderr b/tests/compiletests/ui/lang/consts/u32-from-u64-fail.stderr index 9d70528c267..4d2fabeda35 100644 --- a/tests/compiletests/ui/lang/consts/u32-from-u64-fail.stderr +++ b/tests/compiletests/ui/lang/consts/u32-from-u64-fail.stderr @@ -4,13 +4,13 @@ error[E0277]: the trait bound `u32: From` is not satisfied LL | let value = u32::from(K); | ^^^ the trait `From` is not implemented for `u32` | - = help: the following other types implement trait `From`: - `u32` implements `From` - `u32` implements `From` - `u32` implements `From` - `u32` implements `From` - `u32` implements `From` - `u32` implements `From` + = help: `u32` implements trait `From`: + From + From + From + From + From + From error: aborting due to 1 previous error