diff --git a/Cargo.toml b/Cargo.toml index cb97bd97f0..f9ec217db7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,8 +59,7 @@ tracing = "0.1" tracing-subscriber = { version = "0.3.3", features = ["env-filter", "json"] } num-traits = { version = "0.2.15", default-features = false } glam = { version = ">=0.22, <=0.30", default-features = false } -# libm 0.2.12 is a breaking change with new intrinsics -libm = { version = ">=0.2.5, <=0.2.11", default-features = false } +libm = { version = ">=0.2.5", default-features = false } bytemuck = { version = "1.23", features = ["derive"] } # Enable incremental by default in release mode. diff --git a/crates/rustc_codegen_spirv/src/codegen_cx/declare.rs b/crates/rustc_codegen_spirv/src/codegen_cx/declare.rs index 947a8105cc..104a98e14a 100644 --- a/crates/rustc_codegen_spirv/src/codegen_cx/declare.rs +++ b/crates/rustc_codegen_spirv/src/codegen_cx/declare.rs @@ -161,20 +161,14 @@ impl<'tcx> CodegenCx<'tcx> { .insert(def_id, mode); } - if self.tcx.crate_name(def_id.krate) == self.sym.libm { + // Check for usage of `libm` intrinsics outside of `libm` itself + if self.tcx.crate_name(def_id.krate) == self.sym.libm && !def_id.is_local() { let item_name = self.tcx.item_name(def_id); - let intrinsic = self.sym.libm_intrinsics.get(&item_name); - if self.tcx.visibility(def_id) == ty::Visibility::Public { - match intrinsic { - Some(&intrinsic) => { - self.libm_intrinsics.borrow_mut().insert(def_id, intrinsic); - } - None => { - self.tcx.dcx().err(format!( - "missing libm intrinsic {symbol_name}, which is {instance}" - )); - } - } + if let Some(&intrinsic) = self.sym.libm_intrinsics.get(&item_name) { + self.libm_intrinsics.borrow_mut().insert(def_id, intrinsic); + } else { + let message = format!("missing libm intrinsic {symbol_name}, which is {instance}"); + self.tcx.dcx().err(message); } }