Remove -Zfuel.
This commit is contained in:
parent
f2abf827c1
commit
7fa021ad86
26 changed files with 19 additions and 281 deletions
|
@ -84,8 +84,6 @@ session_not_supported = not supported
|
|||
|
||||
session_octal_float_literal_not_supported = octal float literal is not supported
|
||||
|
||||
session_optimization_fuel_exhausted = optimization-fuel-exhausted: {$msg}
|
||||
|
||||
session_profile_sample_use_file_does_not_exist = file `{$path}` passed to `-C profile-sample-use` does not exist
|
||||
|
||||
session_profile_use_file_does_not_exist = file `{$path}` passed to `-C profile-use` does not exist
|
||||
|
|
|
@ -2356,14 +2356,6 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
|
|||
early_dcx.early_warn(format!("number of threads was capped at {}", parse::MAX_THREADS_CAP));
|
||||
}
|
||||
|
||||
let fuel = unstable_opts.fuel.is_some() || unstable_opts.print_fuel.is_some();
|
||||
if fuel && unstable_opts.threads > 1 {
|
||||
early_dcx.early_fatal("optimization fuel is incompatible with multiple threads");
|
||||
}
|
||||
if fuel && cg.incremental.is_some() {
|
||||
early_dcx.early_fatal("optimization fuel is incompatible with incremental compilation");
|
||||
}
|
||||
|
||||
let incremental = cg.incremental.as_ref().map(PathBuf::from);
|
||||
|
||||
let assert_incr_state = parse_assert_incr_state(early_dcx, &unstable_opts.assert_incr_state);
|
||||
|
|
|
@ -463,12 +463,6 @@ pub fn report_lit_error(
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(session_optimization_fuel_exhausted)]
|
||||
pub(crate) struct OptimisationFuelExhausted {
|
||||
pub(crate) msg: String,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(session_incompatible_linker_flavor)]
|
||||
#[note]
|
||||
|
|
|
@ -394,7 +394,6 @@ mod desc {
|
|||
pub(crate) const parse_collapse_macro_debuginfo: &str = "one of `no`, `external`, or `yes`";
|
||||
pub(crate) const parse_strip: &str = "either `none`, `debuginfo`, or `symbols`";
|
||||
pub(crate) const parse_linker_flavor: &str = ::rustc_target::spec::LinkerFlavorCli::one_of();
|
||||
pub(crate) const parse_optimization_fuel: &str = "crate=integer";
|
||||
pub(crate) const parse_dump_mono_stats: &str = "`markdown` (default) or `json`";
|
||||
pub(crate) const parse_instrument_coverage: &str = parse_bool;
|
||||
pub(crate) const parse_coverage_options: &str =
|
||||
|
@ -948,21 +947,6 @@ pub mod parse {
|
|||
true
|
||||
}
|
||||
|
||||
pub(crate) fn parse_optimization_fuel(
|
||||
slot: &mut Option<(String, u64)>,
|
||||
v: Option<&str>,
|
||||
) -> bool {
|
||||
match v {
|
||||
None => false,
|
||||
Some(s) => {
|
||||
let [crate_name, fuel] = *s.split('=').collect::<Vec<_>>() else { return false };
|
||||
let Ok(fuel) = fuel.parse::<u64>() else { return false };
|
||||
*slot = Some((crate_name.to_string(), fuel));
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn parse_unpretty(slot: &mut Option<String>, v: Option<&str>) -> bool {
|
||||
match v {
|
||||
None => false,
|
||||
|
@ -1794,8 +1778,6 @@ options! {
|
|||
`shallow` prints only type names, `none` prints nothing and disables `{:?}`. (default: `full`)"),
|
||||
force_unstable_if_unmarked: bool = (false, parse_bool, [TRACKED],
|
||||
"force all crates to be `rustc_private` unstable (default: no)"),
|
||||
fuel: Option<(String, u64)> = (None, parse_optimization_fuel, [TRACKED],
|
||||
"set the optimization fuel quota for a crate"),
|
||||
function_return: FunctionReturn = (FunctionReturn::default(), parse_function_return, [TRACKED],
|
||||
"replace returns with jumps to `__x86_return_thunk` (default: `keep`)"),
|
||||
function_sections: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||
|
@ -1978,8 +1960,6 @@ options! {
|
|||
#[rustc_lint_opt_deny_field_access("use `Session::print_codegen_stats` instead of this field")]
|
||||
print_codegen_stats: bool = (false, parse_bool, [UNTRACKED],
|
||||
"print codegen statistics (default: no)"),
|
||||
print_fuel: Option<String> = (None, parse_opt_string, [TRACKED],
|
||||
"make rustc print the total optimization fuel used by a crate"),
|
||||
print_llvm_passes: bool = (false, parse_bool, [UNTRACKED],
|
||||
"print the LLVM optimization passes being run (default: no)"),
|
||||
print_mono_items: Option<String> = (None, parse_opt_string, [UNTRACKED],
|
||||
|
|
|
@ -4,7 +4,6 @@ use std::path::{Path, PathBuf};
|
|||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::Ordering::SeqCst;
|
||||
use std::{env, fmt, io};
|
||||
|
||||
use rustc_data_structures::flock;
|
||||
|
@ -12,7 +11,7 @@ use rustc_data_structures::fx::{FxHashMap, FxIndexSet};
|
|||
use rustc_data_structures::jobserver::{self, Client};
|
||||
use rustc_data_structures::profiling::{SelfProfiler, SelfProfilerRef};
|
||||
use rustc_data_structures::sync::{
|
||||
AtomicU64, DynSend, DynSync, Lock, Lrc, MappedReadGuard, ReadGuard, RwLock,
|
||||
DynSend, DynSync, Lock, Lrc, MappedReadGuard, ReadGuard, RwLock,
|
||||
};
|
||||
use rustc_errors::annotate_snippet_emitter_writer::AnnotateSnippetEmitter;
|
||||
use rustc_errors::codes::*;
|
||||
|
@ -49,13 +48,6 @@ use crate::parse::{ParseSess, add_feature_diagnostics};
|
|||
use crate::search_paths::SearchPath;
|
||||
use crate::{errors, filesearch, lint};
|
||||
|
||||
struct OptimizationFuel {
|
||||
/// If `-zfuel=crate=n` is specified, initially set to `n`, otherwise `0`.
|
||||
remaining: u64,
|
||||
/// We're rejecting all further optimizations.
|
||||
out_of_fuel: bool,
|
||||
}
|
||||
|
||||
/// The behavior of the CTFE engine when an error occurs with regards to backtraces.
|
||||
#[derive(Clone, Copy)]
|
||||
pub enum CtfeBacktrace {
|
||||
|
@ -163,12 +155,6 @@ pub struct Session {
|
|||
/// Data about code being compiled, gathered during compilation.
|
||||
pub code_stats: CodeStats,
|
||||
|
||||
/// Tracks fuel info if `-zfuel=crate=n` is specified.
|
||||
optimization_fuel: Lock<OptimizationFuel>,
|
||||
|
||||
/// Always set to zero and incremented so that we can print fuel expended by a crate.
|
||||
pub print_fuel: AtomicU64,
|
||||
|
||||
/// Loaded up early on in the initialization of this `Session` to avoid
|
||||
/// false positives about a job server in our environment.
|
||||
pub jobserver: Client,
|
||||
|
@ -532,41 +518,6 @@ impl Session {
|
|||
self.opts.incremental.as_ref().map(|_| self.incr_comp_session_dir())
|
||||
}
|
||||
|
||||
/// We want to know if we're allowed to do an optimization for crate foo from -z fuel=foo=n.
|
||||
/// This expends fuel if applicable, and records fuel if applicable.
|
||||
pub fn consider_optimizing(
|
||||
&self,
|
||||
get_crate_name: impl Fn() -> Symbol,
|
||||
msg: impl Fn() -> String,
|
||||
) -> bool {
|
||||
let mut ret = true;
|
||||
if let Some((ref c, _)) = self.opts.unstable_opts.fuel {
|
||||
if c == get_crate_name().as_str() {
|
||||
assert_eq!(self.threads(), 1);
|
||||
let mut fuel = self.optimization_fuel.lock();
|
||||
ret = fuel.remaining != 0;
|
||||
if fuel.remaining == 0 && !fuel.out_of_fuel {
|
||||
if self.dcx().can_emit_warnings() {
|
||||
// We only call `msg` in case we can actually emit warnings.
|
||||
// Otherwise, this could cause a `must_produce_diag` ICE
|
||||
// (issue #79546).
|
||||
self.dcx().emit_warn(errors::OptimisationFuelExhausted { msg: msg() });
|
||||
}
|
||||
fuel.out_of_fuel = true;
|
||||
} else if fuel.remaining > 0 {
|
||||
fuel.remaining -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if let Some(ref c) = self.opts.unstable_opts.print_fuel {
|
||||
if c == get_crate_name().as_str() {
|
||||
assert_eq!(self.threads(), 1);
|
||||
self.print_fuel.fetch_add(1, SeqCst);
|
||||
}
|
||||
}
|
||||
ret
|
||||
}
|
||||
|
||||
/// Is this edition 2015?
|
||||
pub fn is_rust_2015(&self) -> bool {
|
||||
self.edition().is_rust_2015()
|
||||
|
@ -1097,12 +1048,6 @@ pub fn build_session(
|
|||
Lrc::new(SearchPath::from_sysroot_and_triple(&sysroot, target_triple))
|
||||
};
|
||||
|
||||
let optimization_fuel = Lock::new(OptimizationFuel {
|
||||
remaining: sopts.unstable_opts.fuel.as_ref().map_or(0, |&(_, i)| i),
|
||||
out_of_fuel: false,
|
||||
});
|
||||
let print_fuel = AtomicU64::new(0);
|
||||
|
||||
let prof = SelfProfilerRef::new(
|
||||
self_profiler,
|
||||
sopts.unstable_opts.time_passes.then(|| sopts.unstable_opts.time_passes_format),
|
||||
|
@ -1130,8 +1075,6 @@ pub fn build_session(
|
|||
incr_comp_session: RwLock::new(IncrCompSession::NotInitialized),
|
||||
prof,
|
||||
code_stats: Default::default(),
|
||||
optimization_fuel,
|
||||
print_fuel,
|
||||
jobserver: jobserver::client(),
|
||||
lint_store: None,
|
||||
registered_lints: false,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue