incr.comp.: Make cross-crate tracking for incr. comp. opt-in.
This commit is contained in:
parent
d2d8ae6575
commit
197f037652
11 changed files with 38 additions and 13 deletions
|
@ -899,6 +899,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
|||
"attempt to recover from parse errors (experimental)"),
|
||||
incremental: Option<String> = (None, parse_opt_string, [UNTRACKED],
|
||||
"enable incremental compilation (experimental)"),
|
||||
incremental_cc: bool = (false, parse_bool, [UNTRACKED],
|
||||
"enable cross-crate incremental compilation (even more 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],
|
||||
|
|
|
@ -33,8 +33,12 @@ pub struct Predecessors<'query> {
|
|||
|
||||
impl<'q> Predecessors<'q> {
|
||||
pub fn new(query: &'q DepGraphQuery<DefId>, hcx: &mut HashContext) -> Self {
|
||||
// Find nodes for which we want to know the full set of preds
|
||||
let tcx = hcx.tcx;
|
||||
|
||||
let collect_for_metadata = tcx.sess.opts.debugging_opts.incremental_cc ||
|
||||
tcx.sess.opts.debugging_opts.query_dep_graph;
|
||||
|
||||
// Find nodes for which we want to know the full set of preds
|
||||
let node_count = query.graph.len_nodes();
|
||||
|
||||
// Set up some data structures the cache predecessor search needs:
|
||||
|
@ -52,7 +56,7 @@ impl<'q> Predecessors<'q> {
|
|||
.enumerate()
|
||||
.filter(|&(_, node)| match node.data {
|
||||
DepNode::WorkProduct(_) => true,
|
||||
DepNode::MetaData(ref def_id) => def_id.is_local(),
|
||||
DepNode::MetaData(ref def_id) => collect_for_metadata && def_id.is_local(),
|
||||
|
||||
// if -Z query-dep-graph is passed, save more extended data
|
||||
// to enable better unit testing
|
||||
|
|
|
@ -55,17 +55,21 @@ pub fn save_dep_graph<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
|||
let preds = Predecessors::new(&query, &mut hcx);
|
||||
let mut current_metadata_hashes = FxHashMap();
|
||||
|
||||
// IMPORTANT: We are saving the metadata hashes *before* the dep-graph,
|
||||
// since metadata-encoding might add new entries to the
|
||||
// DefIdDirectory (which is saved in the dep-graph file).
|
||||
save_in(sess,
|
||||
metadata_hash_export_path(sess),
|
||||
|e| encode_metadata_hashes(tcx,
|
||||
svh,
|
||||
&preds,
|
||||
&mut builder,
|
||||
&mut current_metadata_hashes,
|
||||
e));
|
||||
if sess.opts.debugging_opts.incremental_cc ||
|
||||
sess.opts.debugging_opts.query_dep_graph {
|
||||
// IMPORTANT: We are saving the metadata hashes *before* the dep-graph,
|
||||
// since metadata-encoding might add new entries to the
|
||||
// DefIdDirectory (which is saved in the dep-graph file).
|
||||
save_in(sess,
|
||||
metadata_hash_export_path(sess),
|
||||
|e| encode_metadata_hashes(tcx,
|
||||
svh,
|
||||
&preds,
|
||||
&mut builder,
|
||||
&mut current_metadata_hashes,
|
||||
e));
|
||||
}
|
||||
|
||||
save_in(sess,
|
||||
dep_graph_path(sess),
|
||||
|e| encode_dep_graph(&preds, &mut builder, e));
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
pub struct Point {
|
||||
pub x: f32,
|
||||
pub y: f32,
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
#![crate_type="rlib"]
|
||||
|
||||
#[cfg(rpass1)]
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
pub struct Point {
|
||||
pub x: f32,
|
||||
pub y: f32,
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
pub struct Point {
|
||||
pub x: f32,
|
||||
pub y: f32,
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
#![allow(warnings)]
|
||||
#![crate_name = "a"]
|
||||
#![crate_type = "rlib"]
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
// no-prefer-dynamic
|
||||
|
||||
#![crate_type="rlib"]
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
#![crate_type="rlib"]
|
||||
|
||||
#[cfg(rpass1)]
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// compile-flags: -Z incremental-cc
|
||||
|
||||
#![crate_type="rlib"]
|
||||
|
||||
#[cfg(rpass1)]
|
||||
|
|
Loading…
Add table
Reference in a new issue