From 2e7da3561a3d501969447725541a99bff7a56745 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 26 Feb 2026 13:31:36 +0100 Subject: [PATCH 1/3] update toolchain to 2025-11-13, fails --- crates/rustc_codegen_spirv/build.rs | 4 ++-- crates/rustc_codegen_spirv/src/builder/builder_methods.rs | 1 + crates/rustc_codegen_spirv/src/builder/mod.rs | 2 +- crates/rustc_codegen_spirv/src/lib.rs | 2 -- rust-toolchain.toml | 4 ++-- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/rustc_codegen_spirv/build.rs b/crates/rustc_codegen_spirv/build.rs index bb6ff18619..ceaa02e462 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-2025-11-02" +channel = "nightly-2025-11-13" components = ["rust-src", "rustc-dev", "llvm-tools"] -# commit_hash = bd3ac0330018c23b111bbee176f32c377be7b319"#; +# commit_hash = 01867557cd7dbe256a031a7b8e28d05daecd75ab"#; 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/builder_methods.rs b/crates/rustc_codegen_spirv/src/builder/builder_methods.rs index 05157d7f93..b05000bd76 100644 --- a/crates/rustc_codegen_spirv/src/builder/builder_methods.rs +++ b/crates/rustc_codegen_spirv/src/builder/builder_methods.rs @@ -1917,6 +1917,7 @@ impl<'a, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'tcx> { OperandRef { val, layout: place.layout, + move_annotation: None, } } diff --git a/crates/rustc_codegen_spirv/src/builder/mod.rs b/crates/rustc_codegen_spirv/src/builder/mod.rs index 7135e144c8..19eb997d60 100644 --- a/crates/rustc_codegen_spirv/src/builder/mod.rs +++ b/crates/rustc_codegen_spirv/src/builder/mod.rs @@ -174,7 +174,7 @@ impl<'a, 'tcx> CoverageInfoBuilderMethods<'tcx> for Builder<'a, 'tcx> { fn add_coverage(&mut self, _instance: Instance<'tcx>, _kind: &CoverageKind) {} } -impl<'a, 'tcx> DebugInfoBuilderMethods for Builder<'a, 'tcx> { +impl<'a, 'tcx> DebugInfoBuilderMethods<'_> for Builder<'a, 'tcx> { fn dbg_var_addr( &mut self, _dbg_var: Self::DIVariable, diff --git a/crates/rustc_codegen_spirv/src/lib.rs b/crates/rustc_codegen_spirv/src/lib.rs index 76f5f5bc71..3523d3a4ac 100644 --- a/crates/rustc_codegen_spirv/src/lib.rs +++ b/crates/rustc_codegen_spirv/src/lib.rs @@ -1,5 +1,4 @@ // HACK(eddyb) start of `rustc_codegen_ssa` crate-level attributes (see `build.rs`). -#![allow(internal_features)] #![allow(rustc::diagnostic_outside_of_impl)] #![allow(rustc::untranslatable_diagnostic)] #![feature(assert_matches)] @@ -7,7 +6,6 @@ #![feature(file_buffered)] #![feature(if_let_guard)] #![feature(negative_impls)] -#![feature(rustdoc_internals)] #![feature(string_from_utf8_lossy_owned)] #![feature(trait_alias)] #![feature(try_blocks)] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b27e9b9dec..4270279926 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,7 +1,7 @@ [toolchain] -channel = "nightly-2025-11-02" +channel = "nightly-2025-11-13" components = ["rust-src", "rustc-dev", "llvm-tools"] -# commit_hash = bd3ac0330018c23b111bbee176f32c377be7b319 +# commit_hash = 01867557cd7dbe256a031a7b8e28d05daecd75ab # Whenever changing the nightly channel, update the commit hash above, and # change `REQUIRED_RUST_TOOLCHAIN` in `crates/rustc_codegen_spirv/build.rs` too. From 6e9690b8e0dff5d02cf82d87e058e406929b3d69 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 26 Feb 2026 13:32:30 +0100 Subject: [PATCH 2/3] adjust target declaration, conflicts with target declaration refactor see https://github.com/Rust-GPU/rust-gpu/pull/491 --- crates/rustc_codegen_spirv/src/link.rs | 10 +++++++--- crates/rustc_codegen_spirv/src/target.rs | 9 +++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/crates/rustc_codegen_spirv/src/link.rs b/crates/rustc_codegen_spirv/src/link.rs index 430cbac59b..205cba0ca6 100644 --- a/crates/rustc_codegen_spirv/src/link.rs +++ b/crates/rustc_codegen_spirv/src/link.rs @@ -25,12 +25,14 @@ use rustc_session::config::{ }; use rustc_session::output::{check_file_is_writeable, invalid_output_for_target, out_filename}; use rustc_span::Symbol; +use spirv_tools::TargetEnv; use std::collections::BTreeMap; use std::ffi::{CString, OsStr}; use std::fs::File; use std::io::{BufWriter, Read}; use std::iter; use std::path::{Path, PathBuf}; +use std::str::FromStr; use std::sync::Arc; pub fn link( @@ -337,7 +339,8 @@ fn do_spirv_opt( opt::{self, Optimizer}, }; - let mut optimizer = opt::create(sess.target.options.env.parse().ok()); + let target_env = TargetEnv::from_str(sess.target.options.env.desc()).ok(); + let mut optimizer = opt::create(target_env); match sess.opts.optimize { OptLevel::No => {} @@ -399,7 +402,8 @@ fn do_spirv_val( ) { use spirv_tools::val::{self, Validator}; - let validator = val::create(sess.target.options.env.parse().ok()); + let target_env = TargetEnv::from_str(sess.target.options.env.desc()).ok(); + let validator = val::create(target_env); if let Err(e) = validator.validate(spv_binary, Some(options)) { let mut err = sess.dcx().struct_err(e.to_string()); @@ -498,7 +502,7 @@ fn add_upstream_native_libraries( fn relevant_lib(sess: &Session, lib: &NativeLib) -> bool { match lib.cfg { Some(ref cfg) => { - eval_config_entry(sess, cfg, CRATE_NODE_ID, None, ShouldEmit::ErrorsAndLints).as_bool() + eval_config_entry(sess, cfg, CRATE_NODE_ID, ShouldEmit::ErrorsAndLints).as_bool() } None => true, } diff --git a/crates/rustc_codegen_spirv/src/target.rs b/crates/rustc_codegen_spirv/src/target.rs index 71390f9b8d..08be3c27e0 100644 --- a/crates/rustc_codegen_spirv/src/target.rs +++ b/crates/rustc_codegen_spirv/src/target.rs @@ -1,5 +1,5 @@ use rspirv::spirv::MemoryModel; -use rustc_target::spec::{Cc, LinkerFlavor, PanicStrategy, Target, TargetOptions}; +use rustc_target::spec::{Arch, Cc, Env, LinkerFlavor, PanicStrategy, Target, TargetOptions}; use spirv_tools::TargetEnv; const ARCH: &str = "spirv"; @@ -61,8 +61,9 @@ impl SpirvTarget { o.emit_debug_gdb_scripts = false; o.linker_flavor = LinkerFlavor::Unix(Cc::No); o.panic_strategy = PanicStrategy::Abort; - o.env = self.env.to_string().into(); - o.vendor = self.vendor.clone().into(); + o.env = Env::Other(self.env.to_string().into()); + // Note(@firestar99): not sure if this does anything + o.is_like_gpu = true; // TODO: Investigate if main_needs_argc_argv is useful (for building exes) o.main_needs_argc_argv = false; o @@ -74,7 +75,7 @@ impl SpirvTarget { metadata: Default::default(), pointer_width: 32, data_layout: "e-m:e-p:32:32:32-i64:64-n8:16:32:64".into(), - arch: ARCH.into(), + arch: Arch::Other(ARCH.into()), options: self.init_target_opts(), } } From 237121f36b477d23d16758eaf1d6d44935f64220 Mon Sep 17 00:00:00 2001 From: David Palm Date: Fri, 14 Nov 2025 09:13:00 +0100 Subject: [PATCH 3/3] make build.rs handle macOS non-utf8 metadata files --- crates/rustc_codegen_spirv/build.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/rustc_codegen_spirv/build.rs b/crates/rustc_codegen_spirv/build.rs index ceaa02e462..e21c94726d 100644 --- a/crates/rustc_codegen_spirv/build.rs +++ b/crates/rustc_codegen_spirv/build.rs @@ -135,6 +135,10 @@ fn generate_pqp_cg_ssa() -> Result<(), Box> { } let in_path = entry.path(); + + if in_path.ends_with(".DS_Store") { + continue; + } let out_path = out_dir.join(entry.file_name()); let mut src = fs::read_to_string(in_path)?;