mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 15:54:15 +00:00
Auto merge of #70297 - nnethercote:clean-up-debugging-options, r=michaelwoerister
Clean up debugging options I found various sub-optimal things when I was looking at option handling.
This commit is contained in:
commit
3c1d9adb3c
@ -615,9 +615,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||
debug_assert!(self.dep_graph.is_green(dep_node));
|
||||
|
||||
// First we try to load the result from the on-disk cache.
|
||||
let result = if Q::cache_on_disk(self, key.clone(), None)
|
||||
&& self.sess.opts.debugging_opts.incremental_queries
|
||||
{
|
||||
let result = if Q::cache_on_disk(self, key.clone(), None) {
|
||||
let prof_timer = self.prof.incr_cache_loading();
|
||||
let result = Q::try_load_from_disk(self, prev_dep_node_index);
|
||||
prof_timer.finish_with_query_invocation_id(dep_node_index.into());
|
||||
|
@ -80,8 +80,7 @@ unsafe fn configure_llvm(sess: &Session) {
|
||||
if sess.print_llvm_passes() {
|
||||
add("-debug-pass=Structure", false);
|
||||
}
|
||||
|
||||
if sess.opts.debugging_opts.generate_arange_section {
|
||||
if !sess.opts.debugging_opts.no_generate_arange_section {
|
||||
add("-generate-arange-section", false);
|
||||
}
|
||||
if get_major_version() >= 8 {
|
||||
|
@ -195,7 +195,7 @@ pub fn load_dep_graph(sess: &Session) -> DepGraphFuture {
|
||||
}
|
||||
|
||||
pub fn load_query_result_cache(sess: &Session) -> OnDiskCache<'_> {
|
||||
if sess.opts.incremental.is_none() || !sess.opts.debugging_opts.incremental_queries {
|
||||
if sess.opts.incremental.is_none() {
|
||||
return OnDiskCache::new_empty(sess.source_map());
|
||||
}
|
||||
|
||||
|
@ -31,11 +31,9 @@ pub fn save_dep_graph(tcx: TyCtxt<'_>) {
|
||||
|
||||
join(
|
||||
move || {
|
||||
if tcx.sess.opts.debugging_opts.incremental_queries {
|
||||
sess.time("incr_comp_persist_result_cache", || {
|
||||
save_in(sess, query_cache_path, |e| encode_query_cache(tcx, e));
|
||||
});
|
||||
}
|
||||
sess.time("incr_comp_persist_result_cache", || {
|
||||
save_in(sess, query_cache_path, |e| encode_query_cache(tcx, e));
|
||||
});
|
||||
},
|
||||
|| {
|
||||
sess.time("incr_comp_persist_dep_graph", || {
|
||||
|
@ -546,8 +546,6 @@ fn test_debugging_options_tracking_hash() {
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.parse_only = true;
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.incremental = Some(String::from("abc"));
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.dump_dep_graph = true;
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.query_dep_graph = true;
|
||||
@ -560,8 +558,6 @@ fn test_debugging_options_tracking_hash() {
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.keep_hygiene_data = true;
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.keep_ast = true;
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.print_mono_items = Some(String::from("abc"));
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
opts.debugging_opts.dump_mir = Some(String::from("abc"));
|
||||
|
@ -1286,33 +1286,6 @@ fn check_thread_count(debugging_opts: &DebuggingOptions, error_format: ErrorOutp
|
||||
}
|
||||
}
|
||||
|
||||
fn select_incremental_path(
|
||||
debugging_opts: &DebuggingOptions,
|
||||
cg: &CodegenOptions,
|
||||
error_format: ErrorOutputType,
|
||||
) -> Option<PathBuf> {
|
||||
match (&debugging_opts.incremental, &cg.incremental) {
|
||||
(Some(path1), Some(path2)) => {
|
||||
if path1 != path2 {
|
||||
early_error(
|
||||
error_format,
|
||||
&format!(
|
||||
"conflicting paths for `-Z incremental` and \
|
||||
`-C incremental` specified: {} versus {}",
|
||||
path1, path2
|
||||
),
|
||||
);
|
||||
} else {
|
||||
Some(path1)
|
||||
}
|
||||
}
|
||||
(Some(path), None) => Some(path),
|
||||
(None, Some(path)) => Some(path),
|
||||
(None, None) => None,
|
||||
}
|
||||
.map(PathBuf::from)
|
||||
}
|
||||
|
||||
fn collect_print_requests(
|
||||
cg: &mut CodegenOptions,
|
||||
dopts: &mut DebuggingOptions,
|
||||
@ -1677,7 +1650,7 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options {
|
||||
|
||||
check_thread_count(&debugging_opts, error_format);
|
||||
|
||||
let incremental = select_incremental_path(&debugging_opts, &cg, error_format);
|
||||
let incremental = cg.incremental.as_ref().map(|m| PathBuf::from(m));
|
||||
|
||||
if debugging_opts.profile && incremental.is_some() {
|
||||
early_error(
|
||||
|
@ -299,6 +299,9 @@ macro_rules! options {
|
||||
}
|
||||
)*
|
||||
|
||||
/// Set a flag to true. Note that it cannot set the flag to false, so
|
||||
/// using this parser in combination with a flag that defaults to true
|
||||
/// is useless; the flag will always be true.
|
||||
fn parse_bool(slot: &mut bool, v: Option<&str>) -> bool {
|
||||
match v {
|
||||
Some(..) => false,
|
||||
@ -786,14 +789,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||
"support compiling tests with panic=abort"),
|
||||
dep_tasks: bool = (false, parse_bool, [UNTRACKED],
|
||||
"print tasks that execute and the color their dep node gets (requires debug build)"),
|
||||
incremental: Option<String> = (None, parse_opt_string, [UNTRACKED],
|
||||
"enable incremental compilation (experimental)"),
|
||||
incremental_queries: bool = (true, parse_bool, [UNTRACKED],
|
||||
"enable incremental compilation support for queries (experimental)"),
|
||||
incremental_info: bool = (false, parse_bool, [UNTRACKED],
|
||||
"print high-level information about incremental reuse (or the lack thereof)"),
|
||||
incremental_dump_hash: bool = (false, parse_bool, [UNTRACKED],
|
||||
"dump hash information in textual format to stdout"),
|
||||
incremental_verify_ich: bool = (false, parse_bool, [UNTRACKED],
|
||||
"verify incr. comp. hashes of green query instances"),
|
||||
incremental_ignore_spans: bool = (false, parse_bool, [UNTRACKED],
|
||||
@ -814,12 +811,10 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||
"for every macro invocation, print its name and arguments"),
|
||||
debug_macros: bool = (false, parse_bool, [TRACKED],
|
||||
"emit line numbers debug info inside macros"),
|
||||
generate_arange_section: bool = (true, parse_bool, [TRACKED],
|
||||
"generate DWARF address ranges for faster lookups"),
|
||||
no_generate_arange_section: bool = (false, parse_bool, [TRACKED],
|
||||
"don't generate DWARF address ranges that give faster lookups"),
|
||||
keep_hygiene_data: bool = (false, parse_bool, [UNTRACKED],
|
||||
"don't clear the hygiene data after analysis"),
|
||||
keep_ast: bool = (false, parse_bool, [UNTRACKED],
|
||||
"keep the AST after lowering it to HIR"),
|
||||
show_span: Option<String> = (None, parse_opt_string, [TRACKED],
|
||||
"show spans for compiler debugging (expr|pat|ty)"),
|
||||
print_type_sizes: bool = (false, parse_bool, [UNTRACKED],
|
||||
@ -854,8 +849,6 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||
"print some statistics about AST and HIR"),
|
||||
always_encode_mir: bool = (false, parse_bool, [TRACKED],
|
||||
"encode MIR of all functions into the crate metadata"),
|
||||
json_rendered: Option<String> = (None, parse_opt_string, [UNTRACKED],
|
||||
"describes how to render the `rendered` field of json diagnostics"),
|
||||
unleash_the_miri_inside_of_you: bool = (false, parse_bool, [TRACKED],
|
||||
"take the breaks off const evaluation. NOTE: this is unsound"),
|
||||
osx_rpath_install_name: bool = (false, parse_bool, [TRACKED],
|
||||
@ -886,8 +879,6 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||
"emit diagnostics rather than buffering (breaks NLL error downgrading, sorting)."),
|
||||
polonius: bool = (false, parse_bool, [UNTRACKED],
|
||||
"enable polonius-based borrow-checker"),
|
||||
codegen_time_graph: bool = (false, parse_bool, [UNTRACKED],
|
||||
"generate a graphical HTML report of time spent in codegen and LLVM"),
|
||||
thinlto: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||
"enable ThinLTO when possible"),
|
||||
inline_in_all_cgus: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||
|
@ -1,9 +1,9 @@
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// We specify opt-level=0 because `drop_in_place` is `Internal` when optimizing
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/extern-drop-glue
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/extern-drop-glue
|
||||
// compile-flags:-Zinline-in-all-cgus -Copt-level=0
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=eager -Zincremental=tmp/partitioning-tests/extern-generic -Zshare-generics=y
|
||||
// compile-flags:-Zprint-mono-items=eager -Cincremental=tmp/partitioning-tests/extern-generic -Zshare-generics=y
|
||||
|
||||
#![allow(dead_code)]
|
||||
#![crate_type="lib"]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/inlining-from-extern-crate
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/inlining-from-extern-crate
|
||||
// compile-flags:-Zinline-in-all-cgus
|
||||
|
||||
#![crate_type="lib"]
|
||||
|
@ -1,8 +1,8 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// We specify opt-level=0 because `drop_in_place` is `Internal` when optimizing
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/local-drop-glue
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-drop-glue
|
||||
// compile-flags:-Zinline-in-all-cgus -Copt-level=0
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=eager -Zincremental=tmp/partitioning-tests/local-generic
|
||||
// compile-flags:-Zprint-mono-items=eager -Cincremental=tmp/partitioning-tests/local-generic
|
||||
|
||||
#![allow(dead_code)]
|
||||
#![crate_type="lib"]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/local-inlining-but-not-all
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-inlining-but-not-all
|
||||
// compile-flags:-Zinline-in-all-cgus=no
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/local-inlining
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-inlining
|
||||
// compile-flags:-Zinline-in-all-cgus
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/local-transitive-inlining
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-transitive-inlining
|
||||
// compile-flags:-Zinline-in-all-cgus
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
@ -4,9 +4,9 @@
|
||||
// ignore-test
|
||||
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/methods-are-with-self-type
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/methods-are-with-self-type
|
||||
|
||||
#![allow(dead_code)]
|
||||
#![feature(start)]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-tidy-linelength
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=eager -Zincremental=tmp/partitioning-tests/regular-modules
|
||||
// compile-flags:-Zprint-mono-items=eager -Cincremental=tmp/partitioning-tests/regular-modules
|
||||
|
||||
#![allow(dead_code)]
|
||||
#![crate_type="lib"]
|
||||
|
@ -2,7 +2,7 @@
|
||||
// no-prefer-dynamic
|
||||
// NOTE: We always compile this test with -Copt-level=0 because higher opt-levels
|
||||
// prevent drop-glue from participating in share-generics.
|
||||
// compile-flags:-Zprint-mono-items=eager -Zshare-generics=yes -Zincremental=tmp/partitioning-tests/shared-generics-exe -Copt-level=0
|
||||
// compile-flags:-Zprint-mono-items=eager -Zshare-generics=yes -Cincremental=tmp/partitioning-tests/shared-generics-exe -Copt-level=0
|
||||
|
||||
#![crate_type="rlib"]
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/statics
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/statics
|
||||
|
||||
#![crate_type="rlib"]
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// We specify -Z incremental here because we want to test the partitioning for
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Zincremental=tmp/partitioning-tests/vtable-through-const
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/vtable-through-const
|
||||
// compile-flags:-Zinline-in-all-cgus
|
||||
|
||||
// This test case makes sure, that references made through constants are
|
||||
|
@ -1852,7 +1852,6 @@ impl<'test> TestCx<'test> {
|
||||
if let Some(ref incremental_dir) = self.props.incremental_dir {
|
||||
rustc.args(&["-C", &format!("incremental={}", incremental_dir.display())]);
|
||||
rustc.args(&["-Z", "incremental-verify-ich"]);
|
||||
rustc.args(&["-Z", "incremental-queries"]);
|
||||
}
|
||||
|
||||
if self.config.mode == CodegenUnits {
|
||||
@ -2571,12 +2570,12 @@ impl<'test> TestCx<'test> {
|
||||
// - if `cfail`, expect compilation to fail
|
||||
// - if `rfail`, expect execution to fail
|
||||
// - create a directory build/foo/bar.incremental
|
||||
// - compile foo/bar.rs with -Z incremental=.../foo/bar.incremental and -C rpass1
|
||||
// - compile foo/bar.rs with -C incremental=.../foo/bar.incremental and -C rpass1
|
||||
// - because name of revision starts with "rpass", expect success
|
||||
// - compile foo/bar.rs with -Z incremental=.../foo/bar.incremental and -C cfail2
|
||||
// - compile foo/bar.rs with -C incremental=.../foo/bar.incremental and -C cfail2
|
||||
// - because name of revision starts with "cfail", expect an error
|
||||
// - load expected errors as usual, but filter for those that end in `[rfail2]`
|
||||
// - compile foo/bar.rs with -Z incremental=.../foo/bar.incremental and -C rpass3
|
||||
// - compile foo/bar.rs with -C incremental=.../foo/bar.incremental and -C rpass3
|
||||
// - because name of revision starts with "rpass", expect success
|
||||
// - execute build/foo/bar.exe and save output
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user