diff options
| author | bors <bors@rust-lang.org> | 2019-07-02 20:00:29 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-07-02 20:00:29 +0000 |
| commit | 0beb2ba16a08dfa01569b5f4644da315dc4c806c (patch) | |
| tree | 12d38055dab44d3af0739db03f498f7dd1ca4956 /src/test | |
| parent | 848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1 (diff) | |
| parent | b7fe2ca5e09b8edab393073198f8f55e1a78079f (diff) | |
| download | rust-0beb2ba16a08dfa01569b5f4644da315dc4c806c.tar.gz rust-0beb2ba16a08dfa01569b5f4644da315dc4c806c.zip | |
Auto merge of #61268 - michaelwoerister:stabilize-pgo, r=alexcrichton
Stabilize support for Profile-guided Optimization This PR makes profile-guided optimization available via the `-C profile-generate` / `-C profile-use` pair of commandline flags and adds end-user documentation for the feature to the [rustc book](https://doc.rust-lang.org/rustc/). The PR thus ticks the last two remaining checkboxes of the [stabilization tracking issue](https://github.com/rust-lang/rust/issues/59913). From the tracking issue: > Profile-guided optimization (PGO) is a common optimization technique for ahead-of-time compilers. It works by collecting data about a program's typical execution (e.g. probability of branches taken, typical runtime values of variables, etc) and then uses this information during program optimization for things like inlining decisions, machine code layout, or indirect call promotion. If you are curious about how this can be used, there is a rendered version of the documentation this PR adds available [here]( https://github.com/michaelwoerister/rust/blob/stabilize-pgo/src/doc/rustc/src/profile-guided-optimization.md). r? @alexcrichton cc @rust-lang/compiler
Diffstat (limited to 'src/test')
6 files changed, 11 insertions, 11 deletions
diff --git a/src/test/codegen/pgo-instrumentation.rs b/src/test/codegen/pgo-instrumentation.rs index e9436505886..8200cf4e016 100644 --- a/src/test/codegen/pgo-instrumentation.rs +++ b/src/test/codegen/pgo-instrumentation.rs @@ -1,8 +1,8 @@ -// Test that `-Zpgo-gen` creates expected instrumentation artifacts in LLVM IR. +// Test that `-Cprofile-generate` creates expected instrumentation artifacts in LLVM IR. // Compiling with `-Cpanic=abort` because PGO+unwinding isn't supported on all platforms. // needs-profiler-support -// compile-flags: -Z pgo-gen -Ccodegen-units=1 -Cpanic=abort +// compile-flags: -Cprofile-generate -Ccodegen-units=1 -Cpanic=abort // CHECK: @__llvm_profile_raw_version = // CHECK: @__profc_{{.*}}pgo_instrumentation{{.*}}some_function{{.*}} = private global diff --git a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile b/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile index 59a7d61892f..f8efeca5614 100644 --- a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile +++ b/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile @@ -21,7 +21,7 @@ all: cpp-executable rust-executable cpp-executable: $(RUSTC) -Clinker-plugin-lto=on \ - -Zpgo-gen="$(TMPDIR)"/cpp-profdata \ + -Cprofile-generate="$(TMPDIR)"/cpp-profdata \ -o "$(TMPDIR)"/librustlib-xlto.a \ $(COMMON_FLAGS) \ ./rustlib.rs @@ -39,7 +39,7 @@ cpp-executable: -o "$(TMPDIR)"/cpp-profdata/merged.profdata \ "$(TMPDIR)"/cpp-profdata/default_*.profraw $(RUSTC) -Clinker-plugin-lto=on \ - -Zpgo-use="$(TMPDIR)"/cpp-profdata/merged.profdata \ + -Cprofile-use="$(TMPDIR)"/cpp-profdata/merged.profdata \ -o "$(TMPDIR)"/librustlib-xlto.a \ $(COMMON_FLAGS) \ ./rustlib.rs @@ -57,7 +57,7 @@ rust-executable: $(CLANG) ./clib.c -fprofile-generate="$(TMPDIR)"/rs-profdata -flto=thin -c -o $(TMPDIR)/clib.o -O3 (cd $(TMPDIR); $(AR) crus ./libxyz.a ./clib.o) $(RUSTC) -Clinker-plugin-lto=on \ - -Zpgo-gen="$(TMPDIR)"/rs-profdata \ + -Cprofile-generate="$(TMPDIR)"/rs-profdata \ -L$(TMPDIR) \ $(COMMON_FLAGS) \ -Clinker=$(CLANG) \ @@ -78,7 +78,7 @@ rust-executable: rm "$(TMPDIR)"/libxyz.a (cd $(TMPDIR); $(AR) crus ./libxyz.a ./clib.o) $(RUSTC) -Clinker-plugin-lto=on \ - -Zpgo-use="$(TMPDIR)"/rs-profdata/merged.profdata \ + -Cprofile-use="$(TMPDIR)"/rs-profdata/merged.profdata \ -L$(TMPDIR) \ $(COMMON_FLAGS) \ -Clinker=$(CLANG) \ diff --git a/src/test/run-make-fulldeps/pgo-gen-lto/Makefile b/src/test/run-make-fulldeps/pgo-gen-lto/Makefile index 56f31434ade..6c70d951c35 100644 --- a/src/test/run-make-fulldeps/pgo-gen-lto/Makefile +++ b/src/test/run-make-fulldeps/pgo-gen-lto/Makefile @@ -2,7 +2,7 @@ -include ../tools.mk -COMPILE_FLAGS=-Copt-level=3 -Clto=fat -Z pgo-gen="$(TMPDIR)" +COMPILE_FLAGS=-Copt-level=3 -Clto=fat -Cprofile-generate="$(TMPDIR)" # LLVM doesn't yet support instrumenting binaries that use unwinding on MSVC: # https://github.com/rust-lang/rust/issues/61002 diff --git a/src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile b/src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile index bb86160d2df..3fbfeb09eb3 100644 --- a/src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile +++ b/src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile @@ -2,7 +2,7 @@ -include ../tools.mk -COMPILE_FLAGS=-O -Ccodegen-units=1 -Z pgo-gen="$(TMPDIR)" +COMPILE_FLAGS=-O -Ccodegen-units=1 -Cprofile-generate="$(TMPDIR)" # LLVM doesn't yet support instrumenting binaries that use unwinding on MSVC: # https://github.com/rust-lang/rust/issues/61002 diff --git a/src/test/run-make-fulldeps/pgo-gen/Makefile b/src/test/run-make-fulldeps/pgo-gen/Makefile index f0ab3b7d13d..3b66427c14c 100644 --- a/src/test/run-make-fulldeps/pgo-gen/Makefile +++ b/src/test/run-make-fulldeps/pgo-gen/Makefile @@ -2,7 +2,7 @@ -include ../tools.mk -COMPILE_FLAGS=-g -Z pgo-gen="$(TMPDIR)" +COMPILE_FLAGS=-g -Cprofile-generate="$(TMPDIR)" # LLVM doesn't yet support instrumenting binaries that use unwinding on MSVC: # https://github.com/rust-lang/rust/issues/61002 diff --git a/src/test/run-make-fulldeps/pgo-use/Makefile b/src/test/run-make-fulldeps/pgo-use/Makefile index 72c3c34ee37..61a73587759 100644 --- a/src/test/run-make-fulldeps/pgo-use/Makefile +++ b/src/test/run-make-fulldeps/pgo-use/Makefile @@ -33,7 +33,7 @@ endif all: # Compile the test program with instrumentation - $(RUSTC) $(COMMON_FLAGS) -Z pgo-gen="$(TMPDIR)" main.rs + $(RUSTC) $(COMMON_FLAGS) -Cprofile-generate="$(TMPDIR)" main.rs # Run it in order to generate some profiling data $(call RUN,main some-argument) || exit 1 # Postprocess the profiling data so it can be used by the compiler @@ -41,7 +41,7 @@ all: -o "$(TMPDIR)"/merged.profdata \ "$(TMPDIR)"/default_*.profraw # Compile the test program again, making use of the profiling data - $(RUSTC) $(COMMON_FLAGS) -Z pgo-use="$(TMPDIR)"/merged.profdata --emit=llvm-ir main.rs + $(RUSTC) $(COMMON_FLAGS) -Cprofile-use="$(TMPDIR)"/merged.profdata --emit=llvm-ir main.rs # Check that the generate IR contains some things that we expect # # We feed the file into LLVM FileCheck tool *in reverse* so that we see the |
