1
Fork 0
rust/compiler
Jubilee 6c2d4bf3f7
Rollup merge of #87918 - mikebenfield:pr-afdo, r=nikic
Enable AutoFDO.

This largely involves implementing the options debug-info-for-profiling
and profile-sample-use and forwarding them on to LLVM.

AutoFDO can be used on x86-64 Linux like this:
rustc -O -Clink-arg='Wl,--no-rosegment' -Cdebug-info-for-profiling main.rs -o main
perf record -b ./main
create_llvm_prof --binary=main --out=code.prof
rustc -O -Cprofile-sample-use=code.prof main.rs -o main2

Now `main2` will have feedback directed optimization applied to it.

The create_llvm_prof tool can be obtained from this github repository:
https://github.com/google/autofdo

The option -Clink-arg='Wl,--no-rosegment' is necessary to avoid lld
putting an extra RO segment before the executable code, which would make
the binary silently incompatible with create_llvm_prof.
2021-10-07 20:26:09 -07:00
..
rustc Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_apfloat Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_arena Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_ast Rollup merge of #89487 - FabianWolff:issue-89396, r=petrochenkov 2021-10-04 21:12:42 -07:00
rustc_ast_lowering Add desugaring mark to while loop 2021-10-02 17:41:14 -05:00
rustc_ast_passes Allow adding a set of cfg's to hide from being implicitly doc(cfg)'d 2021-10-05 18:04:15 +02:00
rustc_ast_pretty Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_attr Move some HashStable impls. 2021-10-03 16:08:50 +02:00
rustc_borrowck Rollup merge of #89615 - willcrichton:fix-get-body-with-borrowck-facts, r=oli-obk 2021-10-07 16:24:54 +02:00
rustc_builtin_macros Practice diagnostic message convention 2021-10-03 16:16:28 +09:00
rustc_codegen_cranelift Move rustc_middle::middle::cstore to rustc_session. 2021-10-03 16:08:51 +02:00
rustc_codegen_gcc Move rustc_middle::middle::cstore to rustc_session. 2021-10-03 16:08:51 +02:00
rustc_codegen_llvm Rollup merge of #87918 - mikebenfield:pr-afdo, r=nikic 2021-10-07 20:26:09 -07:00
rustc_codegen_ssa Enable AutoFDO. 2021-10-06 19:36:52 +00:00
rustc_const_eval Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister 2021-10-05 09:45:11 +00:00
rustc_data_structures Rollup merge of #87993 - kornelski:try_reserve_stable, r=joshtriplett 2021-10-04 21:12:33 -07:00
rustc_driver Auto merge of #89363 - oli-obk:in_tracing_we_trust, r=Mark-Simulacrum 2021-10-05 12:52:43 +00:00
rustc_error_codes Consistently use 'supertrait'. 2021-10-02 08:05:44 +07:00
rustc_errors Rollup merge of #89046 - oli-obk:fix_oflo, r=estebank 2021-09-22 19:03:22 +02:00
rustc_expand Improve help for recursion limit errors 2021-09-28 22:17:13 +02:00
rustc_feature Clean up code a bit: 2021-10-06 20:23:57 +02:00
rustc_fs_util Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_graphviz Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_hir Introduce get_diagnostic_name 2021-10-06 08:40:28 -05:00
rustc_hir_pretty Avoid more invocations of hir_crate query. 2021-09-29 23:16:47 +02:00
rustc_incremental Avoid more invocations of hir_crate query. 2021-09-29 23:16:47 +02:00
rustc_index Rollup merge of #89508 - jhpratt:stabilize-const_panic, r=joshtriplett 2021-10-04 13:58:17 -07:00
rustc_infer Auto merge of #89495 - Mark-Simulacrum:add-inlines, r=michaelwoerister 2021-10-07 06:23:23 +00:00
rustc_interface Enable AutoFDO. 2021-10-06 19:36:52 +00:00
rustc_lexer Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_lint Use get_diagnostic_name 2021-10-06 13:10:08 -05:00
rustc_lint_defs Rollup merge of #89461 - crlf0710:dyn_upcasting_lint, r=nikomatsakis 2021-10-07 16:24:49 +02:00
rustc_llvm Rollup merge of #87918 - mikebenfield:pr-afdo, r=nikic 2021-10-07 20:26:09 -07:00
rustc_macros Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister 2021-10-05 09:45:11 +00:00
rustc_metadata Introduce get_diagnostic_name 2021-10-06 08:40:28 -05:00
rustc_middle Auto merge of #89534 - camsteffen:diag-name, r=oli-obk 2021-10-07 14:22:16 +00:00
rustc_mir_build Rollup merge of #89441 - Nadrieril:fix-89393, r=tmandry 2021-10-01 14:46:52 -07:00
rustc_mir_dataflow Rollup merge of #89532 - ecstatic-morse:maybe-live-locals-enum, r=oli-obk,tmiasko 2021-10-05 12:52:48 -07:00
rustc_mir_transform opt-level >= 4 2021-10-06 20:37:24 +02:00
rustc_monomorphize Avoid more invocations of hir_crate query. 2021-09-29 23:16:47 +02:00
rustc_parse Use TokenKind::similar_tokens() 2021-10-04 22:13:00 +02:00
rustc_parse_format Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_passes Auto merge of #89629 - GuillaumeGomez:rollup-s4r8me6, r=GuillaumeGomez 2021-10-07 17:17:25 +00:00
rustc_plugin_impl Move rustc_middle::middle::cstore to rustc_session. 2021-10-03 16:08:51 +02:00
rustc_privacy Auto merge of #89405 - GuillaumeGomez:fix-clippy-lints, r=cjgillot 2021-10-02 10:52:09 +00:00
rustc_query_impl Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister 2021-10-05 09:45:11 +00:00
rustc_query_system Add some inlining. 2021-10-03 16:08:57 +02:00
rustc_resolve Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister 2021-10-05 09:45:11 +00:00
rustc_save_analysis Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister 2021-10-05 09:45:11 +00:00
rustc_serialize Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_session Enable AutoFDO. 2021-10-06 19:36:52 +00:00
rustc_span Allow adding a set of cfg's to hide from being implicitly doc(cfg)'d 2021-10-05 18:04:15 +02:00
rustc_symbol_mangling Remove re-export. 2021-10-03 16:08:54 +02:00
rustc_target Remove various unused feature gates 2021-10-02 19:09:18 +02:00
rustc_trait_selection Auto merge of #89629 - GuillaumeGomez:rollup-s4r8me6, r=GuillaumeGomez 2021-10-07 17:17:25 +00:00
rustc_traits Improve cause information for NLL higher-ranked errors 2021-09-27 10:23:45 -05:00
rustc_ty_utils Remove various unused feature gates 2021-10-02 19:09:18 +02:00
rustc_type_ir Add two inline annotations for hot functions 2021-10-03 12:43:43 -04:00
rustc_typeck Auto merge of #89629 - GuillaumeGomez:rollup-s4r8me6, r=GuillaumeGomez 2021-10-07 17:17:25 +00:00