Open jyn514 opened 3 years ago
Just off the top of my head, codegen_units
, incremental_ignore_spans
, borrowck
, and maybe_sysroot
all look suspicious.
I worry that a one time audit may help but ultimately not fix the long tail as changes are added. Maybe we should default to tracked, updating all existing options, and then relax if we can definitely trust it to not need to be tracked?
I wonder if we could automate at least some of this by doing incremental builds with a clean cache with and without the option, then checking if the cache is the same. I don't know if there's an easy way to compare two caches; maybe just a binary comparison is good enough?
A simpler but less effective version of that is to only compare the final binary.
I know of several bugs due to untracked options that should be tracked (e.g. https://github.com/rust-lang/rust/issues/66955, https://github.com/rust-lang/rust/issues/84225). Maybe we should go through all the untracked options and make sure they should actually be untracked?
All untracked options
``` $ grep '\[UNTRACKED\]' compiler/rustc_session/src/options.rs ($opt_name:ident, $opt_expr:expr, $sub_hashes:expr, [UNTRACKED]) => {{}}; // [UNTRACKED] describe_lints: bool [UNTRACKED], search_paths: Veccc @Aaron1011