diff options
| author | bors <bors@rust-lang.org> | 2019-06-17 09:59:57 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-06-17 09:59:57 +0000 |
| commit | 289b78ac0a2ee91d3872c65438f718780f294a9a (patch) | |
| tree | a900a314e2f1f3d33b00b12c77e375591f3a08d5 /src/bootstrap | |
| parent | 63f21b6ca576c8b747829d4f3f9d4eb2f94ee38b (diff) | |
| parent | a0c7984fb97b6864352028b848c3240ae5b3554e (diff) | |
| download | rust-289b78ac0a2ee91d3872c65438f718780f294a9a.tar.gz rust-289b78ac0a2ee91d3872c65438f718780f294a9a.zip | |
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.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/bin/rustc.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs index f5fb6f0b4d0..595deb07ec8 100644 --- a/src/bootstrap/bin/rustc.rs +++ b/src/bootstrap/bin/rustc.rs @@ -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 |
