diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2024-11-23 16:24:23 +1100 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-11-24 21:12:40 +1100 |
| commit | 972663d8ec0ee88b8a0abee4054757ad10223450 (patch) | |
| tree | 6ac0d2ef377bd90cf3e9432e31ede742ab13cdcd | |
| parent | bba35673869408839778949efcb223cf77597352 (diff) | |
| download | rust-972663d8ec0ee88b8a0abee4054757ad10223450.tar.gz rust-972663d8ec0ee88b8a0abee4054757ad10223450.zip | |
Allow injecting a profiler runtime into `#![no_core]` crates
Now that the profiler runtime is itself `#![no_core]`, it can be a dependency of other no_core crates, including core.
| -rw-r--r-- | compiler/rustc_metadata/messages.ftl | 3 | ||||
| -rw-r--r-- | compiler/rustc_metadata/src/creader.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_metadata/src/errors.rs | 4 |
3 files changed, 2 insertions, 13 deletions
diff --git a/compiler/rustc_metadata/messages.ftl b/compiler/rustc_metadata/messages.ftl index d80aa0cc4f4..6d7d88fa8d7 100644 --- a/compiler/rustc_metadata/messages.ftl +++ b/compiler/rustc_metadata/messages.ftl @@ -233,9 +233,6 @@ metadata_prev_alloc_error_handler = metadata_prev_global_alloc = previous global allocator defined here -metadata_profiler_builtins_needs_core = - `profiler_builtins` crate (required by compiler options) is not compatible with crate attribute `#![no_core]` - metadata_raw_dylib_no_nul = link name must not contain NUL characters if link kind is `raw-dylib` diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs index 6c866e72ca3..d1e401fbb75 100644 --- a/compiler/rustc_metadata/src/creader.rs +++ b/compiler/rustc_metadata/src/creader.rs @@ -799,7 +799,7 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> { self.inject_dependency_if(cnum, "a panic runtime", &|data| data.needs_panic_runtime()); } - fn inject_profiler_runtime(&mut self, krate: &ast::Crate) { + fn inject_profiler_runtime(&mut self) { let needs_profiler_runtime = self.sess.instrument_coverage() || self.sess.opts.cg.profile_generate.enabled(); if !needs_profiler_runtime || self.sess.opts.unstable_opts.no_profiler_runtime { @@ -809,10 +809,6 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> { info!("loading profiler"); let name = Symbol::intern(&self.sess.opts.unstable_opts.profiler_runtime); - if name == sym::profiler_builtins && attr::contains_name(&krate.attrs, sym::no_core) { - self.dcx().emit_err(errors::ProfilerBuiltinsNeedsCore); - } - let Some(cnum) = self.resolve_crate(name, DUMMY_SP, CrateDepKind::Implicit) else { return; }; @@ -1046,7 +1042,7 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> { pub fn postprocess(&mut self, krate: &ast::Crate) { self.inject_forced_externs(); - self.inject_profiler_runtime(krate); + self.inject_profiler_runtime(); self.inject_allocator_crate(krate); self.inject_panic_runtime(krate); diff --git a/compiler/rustc_metadata/src/errors.rs b/compiler/rustc_metadata/src/errors.rs index 16684ae6f26..b6c5619ec18 100644 --- a/compiler/rustc_metadata/src/errors.rs +++ b/compiler/rustc_metadata/src/errors.rs @@ -340,10 +340,6 @@ pub struct NoPanicStrategy { } #[derive(Diagnostic)] -#[diag(metadata_profiler_builtins_needs_core)] -pub struct ProfilerBuiltinsNeedsCore; - -#[derive(Diagnostic)] #[diag(metadata_not_profiler_runtime)] pub struct NotProfilerRuntime { pub crate_name: Symbol, |
