Auto merge of #58508 - Zoxc:time-crate, r=oli-obk

Add a RUSTC_TIME env var to time rust crates during bootstrap

Blocked on https://github.com/rust-lang/cargo/pull/6674

r? @michaelwoerister

Example for rustc with https://github.com/rust-lang/rust/pull/58507:
```
  time: 0.460; rss: 94MB	parsing
  time: 0.000; rss: 94MB	attributes injection
  time: 0.000; rss: 94MB	recursion limit
  time: 0.000; rss: 94MB	crate injection
  time: 0.000; rss: 94MB	plugin loading
  time: 0.000; rss: 94MB	plugin registration
  time: 0.044; rss: 94MB	pre ast expansion lint checks
    time: 1.999; rss: 316MB	expand crate
    time: 0.000; rss: 316MB	check unused macros
  time: 2.000; rss: 316MB	expansion
  time: 0.000; rss: 316MB	maybe building test harness
  time: 0.053; rss: 316MB	AST validation
  time: 0.000; rss: 316MB	maybe creating a macro crate
  time: 1.515; rss: 397MB	name resolution
  time: 0.122; rss: 397MB	complete gated feature checking
  time: 0.655; rss: 546MB	lowering ast -> hir
  time: 0.136; rss: 550MB	early lint checks
    time: 0.117; rss: 540MB	validate hir map
  time: 0.606; rss: 540MB	indexing hir
  time: 0.000; rss: 480MB	load query result cache
  time: 0.000; rss: 478MB	dep graph tcx init
  time: 0.000; rss: 478MB	looking for entry point
  time: 0.001; rss: 478MB	looking for plugin registrar
  time: 0.001; rss: 478MB	looking for derive registrar
  time: 0.049; rss: 478MB	loop checking
  time: 0.064; rss: 479MB	attribute checking
  time: 0.166; rss: 484MB	stability checking
  time: 0.699; rss: 566MB	type collecting
  time: 0.006; rss: 566MB	outlives testing
  time: 0.018; rss: 568MB	impl wf inference
    time: 0.002; rss: 583MB	unsafety checking
    time: 0.005; rss: 583MB	orphan checking
  time: 0.227; rss: 583MB	coherence checking
  time: 0.006; rss: 583MB	variance testing
  time: 1.546; rss: 657MB	wf checking
  time: 0.389; rss: 665MB	item-types checking
  time: 13.999; rss: 837MB	item-bodies checking
    time: 1.692; rss: 883MB	rvalue promotion
    time: 0.067; rss: 883MB	intrinsic checking
    time: 0.624; rss: 887MB	match checking
    time: 0.246; rss: 889MB	liveness checking
  time: 2.629; rss: 889MB	misc checking
  time: 0.000; rss: 889MB	borrow checking
  time: 16.754; rss: 1242MB	MIR borrow checking
  time: 0.050; rss: 1242MB	dumping chalk-like clauses
  time: 0.010; rss: 1242MB	MIR effect checking
  time: 0.001; rss: 1242MB	layout testing
    time: 0.829; rss: 1244MB	privacy checking
    time: 0.183; rss: 1247MB	death checking
    time: 0.100; rss: 1248MB	unused lib feature checking
    time: 0.405; rss: 1250MB	lint checking
  time: 1.518; rss: 1250MB	misc checking
  time: 0.000; rss: 1250MB	resolving dependency formats
    time: 2.928; rss: 1332MB	write metadata
      time: 0.014; rss: 1332MB	collecting roots
      time: 7.621; rss: 1488MB	collecting mono items
    time: 7.635; rss: 1488MB	monomorphization collection
    time: 0.557; rss: 1567MB	codegen unit partitioning
    time: 27.971; rss: 2656MB	codegen to LLVM IR
    time: 0.056; rss: 2656MB	assert dep graph
    time: 0.000; rss: 2656MB	serialize dep graph
  time: 195.414; rss: 2656MB	codegen
  time: 0.000; rss: 329MB	serialize work products
    time: 1.664; rss: 331MB	running linker
  time: 1.965; rss: 331MB	linking
[RUSTC-TIMING] rustc test:false 950.103
```
It doesn't really look like the times add up here.
This commit is contained in:
bors 2019-06-17 09:59:57 +00:00
commit 289b78ac0a

View File

@ -93,6 +93,21 @@ fn main() {
env::join_paths(&dylib_path).unwrap());
let mut maybe_crate = None;
// Get the name of the crate we're compiling, if any.
let maybe_crate_name = args.windows(2)
.find(|a| &*a[0] == "--crate-name")
.map(|crate_name| &*crate_name[1]);
if let Some(current_crate) = maybe_crate_name {
if let Some(target) = env::var_os("RUSTC_TIME") {
if target == "all" ||
target.into_string().unwrap().split(",").any(|c| c.trim() == current_crate)
{
cmd.arg("-Ztime");
}
}
}
// Non-zero stages must all be treated uniformly to avoid problems when attempting to uplift
// compiler libraries and such from stage 1 to 2.
if stage == "0" {
@ -152,10 +167,7 @@ fn main() {
cmd.arg(format!("-Clinker={}", target_linker));
}
let crate_name = args.windows(2)
.find(|a| &*a[0] == "--crate-name")
.unwrap();
let crate_name = &*crate_name[1];
let crate_name = maybe_crate_name.unwrap();
maybe_crate = Some(crate_name);
// If we're compiling specifically the `panic_abort` crate then we pass