- Notifications
You must be signed in to change notification settings - Fork 13.8k
Closed
Closed
Copy link
Labels
I-compiletimeIssue: Problems and improvements with respect to compile times.Issue: Problems and improvements with respect to compile times.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Description
STR
$ ../x.py test --incremental src/test/{compile-fail,ui,run-pass} Updating only changed submodules Submodules updated in 0.03 seconds Finished dev [unoptimized] target(s) in 0.24s Building stage0 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu) Finished release [optimized] target(s) in 0.25s Copying stage0 std from stage0 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-gnu) Building stage0 test artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu) Finished release [optimized] target(s) in 0.23s Copying stage0 test from stage0 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-gnu) Building stage0 compiler artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu) Compiling rustc_typeck v0.0.0 (file:///home/ariel/Rust/rust-master/src/librustc_typeck) Compiling rustc_save_analysis v0.0.0 (file:///home/ariel/Rust/rust-master/src/librustc_save_analysis) Compiling rustc_privacy v0.0.0 (file:///home/ariel/Rust/rust-master/src/librustc_privacy) Compiling rustc_driver v0.0.0 (file:///home/ariel/Rust/rust-master/src/librustc_driver) Compiling rustc-main v0.0.0 (file:///home/ariel/Rust/rust-master/src/rustc) Finished release [optimized] target(s) in 24.95s Copying stage0 rustc from stage0 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-gnu) Building stage0 codegen artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu, llvm) Compiling libc v0.2.43 Compiling rustc-demangle v0.1.9 Compiling cc v1.0.22 Compiling rustc_codegen_llvm v0.0.0 (file:///home/ariel/Rust/rust-master/src/librustc_codegen_llvm) Compiling rustc_llvm v0.0.0 (file:///home/ariel/Rust/rust-master/src/librustc_llvm) warning: In file included from /home/ariel/Rust/rust-master/src/llvm/include/llvm/CodeGen/TargetSubtargetInfo.h:22, warning: from ../rustllvm/PassWrapper.cpp:29: warning: /home/ariel/Rust/rust-master/src/llvm/include/llvm/CodeGen/SchedulerRegistry.h: In constructor ‘llvm::RegisterScheduler::RegisterScheduler(const char*, const char*, llvm::RegisterScheduler::FunctionPassCtor)’: warning: /home/ariel/Rust/rust-master/src/llvm/include/llvm/CodeGen/SchedulerRegistry.h:40:52: warning: cast between incompatible function types from ‘llvm::RegisterScheduler::FunctionPassCtor’ {aka ‘llvm::ScheduleDAGSDNodes* (*)(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)’} to ‘llvm::MachinePassCtor’ {aka ‘void* (*)()’} [-Wcast-function-type] warning: : MachinePassRegistryNode(N, D, (MachinePassCtor)C) warning: ^ Compiling num_cpus v1.8.0 Finished release [optimized] target(s) in 1m 02s Assembling stage1 compiler (x86_64-unknown-linux-gnu) Building stage1 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu) ...
This also occurs with keep-stage0
etc.
Expected result
Changing librustc_typeck
requires only the reverse dependencies of librustc_typeck
to be recompiled.
Actual result
librustc_codegen_llvm
is also recompiled. As you can see, this takes twice as much as compiling the reverse dependencies of librustc_typeck
alone, leading to compilation being 3x slower.
Metadata
Metadata
Assignees
Labels
I-compiletimeIssue: Problems and improvements with respect to compile times.Issue: Problems and improvements with respect to compile times.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)