about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2017-02-13 09:57:50 +0000
committerwhitequark <whitequark@whitequark.org>2017-05-01 09:16:20 +0000
commit42754ce710a777b38402b12728daf54d68ea2b50 (patch)
tree471e30da0626a6b7b2182799280742ba11466ac6 /src/libstd
parent06fb4d25642a3f223db1441972dd5962085cfba1 (diff)
downloadrust-42754ce710a777b38402b12728daf54d68ea2b50.tar.gz
rust-42754ce710a777b38402b12728daf54d68ea2b50.zip
Add profiling support, through the rustc -Z profile flag.
When -Z profile is passed, the GCDAProfiling LLVM pass is added
to the pipeline, which uses debug information to instrument the IR.
After compiling with -Z profile, the $(OUT_DIR)/$(CRATE_NAME).gcno
file is created, containing initial profiling information.
After running the program built, the $(OUT_DIR)/$(CRATE_NAME).gcda
file is created, containing branch counters.

The created *.gcno and *.gcda files can be processed using
the "llvm-cov gcov" and "lcov" tools. The profiling data LLVM
generates does not faithfully follow the GCC's format for *.gcno
and *.gcda files, and so it will probably not work with other tools
(such as gcov itself) that consume these files.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/Cargo.toml2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
index 717892be2ab..f268214e5d1 100644
--- a/src/libstd/Cargo.toml
+++ b/src/libstd/Cargo.toml
@@ -20,6 +20,7 @@ core = { path = "../libcore" }
 libc = { path = "../rustc/libc_shim" }
 rand = { path = "../librand" }
 compiler_builtins = { path = "../libcompiler_builtins" }
+profiler_builtins = { path = "../libprofiler_builtins", optional = true }
 std_unicode = { path = "../libstd_unicode" }
 unwind = { path = "../libunwind" }
 
@@ -43,3 +44,4 @@ debug-jemalloc = ["alloc_jemalloc/debug"]
 jemalloc = ["alloc_jemalloc"]
 force_alloc_system = []
 panic-unwind = ["panic_unwind"]
+profiler = ["profiler_builtins"]