rust/src
bors 7f79e98c03 Auto merge of #72205 - ecstatic-morse:nrvo, r=oli-obk
Dumb NRVO

This is a very simple version of an NRVO pass, which scans backwards from the `return` terminator to see if there is an an assignment like `_0 = _1`. If a basic block with two or more predecessors is encountered during this scan without first seeing an assignment to the return place, we bail out. This avoids running a full "reaching definitions" dataflow analysis.

I wanted to see how much `rustc` would benefit from even a very limited version of this optimization. We should be able to use this as a point of comparison for more advanced versions that are based on live ranges.

r? @ghost
2020-05-21 07:16:44 +00:00
..
bootstrap Auto merge of #67759 - nikic:llvm-10, r=Mark-Simulacrum 2020-05-20 22:49:57 +00:00
build_helper
ci Workaround MSYS2/chocolatey issue again 2020-05-20 17:40:58 +02:00
doc Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
etc
liballoc Adjust the zero check in RawVec::grow. 2020-05-20 09:57:14 +10:00
libarena Be less aggressive with DroplessArena/TypedArena growth. 2020-05-13 11:35:32 +10:00
libcore Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
libfmt_macros Fix tests 2020-05-18 14:41:34 +01:00
libgraphviz
libpanic_abort Bump bootstrap compiler 2020-04-25 09:25:33 -04:00
libpanic_unwind make abort intrinsic safe, and correct its documentation 2020-05-17 11:23:42 +02:00
libproc_macro Rollup merge of #72233 - dtolnay:literal, r=petrochenkov 2020-05-17 01:51:30 +02:00
libprofiler_builtins
librustc_apfloat Dogfood more or_patterns in the compiler 2020-04-19 07:33:58 -07:00
librustc_ast Move InlineAsmTemplatePiece and InlineAsmOptions to librustc_ast 2020-05-18 14:41:33 +01:00
librustc_ast_lowering Rollup merge of #72275 - marmeladema:fix-issue-71104-2, r=ecstatic-morse 2020-05-20 14:21:07 +02:00
librustc_ast_passes Disallow forbidden usage of non-ascii identifiers. 2020-05-17 01:31:18 +08:00
librustc_ast_pretty Move InlineAsmTemplatePiece and InlineAsmOptions to librustc_ast 2020-05-18 14:41:33 +01:00
librustc_attr Fix clippy warnings 2020-05-11 17:13:32 +02:00
librustc_builtin_macros Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
librustc_codegen_llvm Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
librustc_codegen_ssa Auto merge of #72205 - ecstatic-morse:nrvo, r=oli-obk 2020-05-21 07:16:44 +00:00
librustc_data_structures Auto merge of #72079 - semarie:openbsd-stacker, r=Mark-Simulacrum 2020-05-16 03:55:49 +00:00
librustc_driver rustc_driver::main: more informative return type 2020-05-11 00:11:42 +02:00
librustc_error_codes Add documentation for asm! 2020-05-18 14:41:34 +01:00
librustc_errors Simplify the error Registry methods a little 2020-05-04 11:52:15 -07:00
librustc_expand Auto merge of #68717 - petrochenkov:stabexpat, r=varkor 2020-05-19 03:11:32 +00:00
librustc_feature Auto merge of #69171 - Amanieu:new-asm, r=nagisa,nikomatsakis 2020-05-19 18:32:40 +00:00
librustc_fs_util
librustc_hir Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
librustc_hir_pretty Move InlineAsmTemplatePiece and InlineAsmOptions to librustc_ast 2020-05-18 14:41:33 +01:00
librustc_incremental Change WorkProduct::saved_files to an Option. 2020-05-12 17:55:07 +10:00
librustc_index
librustc_infer Rollup merge of #72066 - lcnr:const-type-info-err, r=varkor 2020-05-19 13:53:41 +02:00
librustc_interface Implement AST lowering for asm! 2020-05-18 14:41:29 +01:00
librustc_lexer Replace some usages of the old unescape_ functions in AST, clippy and tests. 2020-05-13 10:05:04 +02:00
librustc_lint Assume unevaluated consts are equal to the other consts and add ConstEquate obligation. This delays 2020-05-17 11:01:02 +02:00
librustc_llvm Don't skip building LLVM if already built 2020-05-02 18:43:55 -04:00
librustc_macros Monomorphise load_from_disk_and_cache_in_memory. 2020-05-01 14:29:35 +02:00
librustc_metadata use min_specialization for some rustc crates where it requires no changes 2020-05-10 11:25:00 +02:00
librustc_middle Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
librustc_mir Auto merge of #72205 - ecstatic-morse:nrvo, r=oli-obk 2020-05-21 07:16:44 +00:00
librustc_mir_build Rollup merge of #72364 - jsgf:remove-unused-deps, r=Mark-Simulacrum 2020-05-20 14:21:11 +02:00
librustc_parse Rollup merge of #72254 - ehuss:double-backtick, r=dtolnay 2020-05-16 19:46:37 +02:00
librustc_passes Move InlineAsmTemplatePiece and InlineAsmOptions to librustc_ast 2020-05-18 14:41:33 +01:00
librustc_plugin_impl Remove ast::{Ident, Name} reexports. 2020-05-08 13:13:15 +02:00
librustc_privacy Remove ty::UnnormalizedProjection 2020-05-12 01:56:29 -04:00
librustc_query_system Rollup merge of #72126 - nnethercote:change-WorkProduct-saved_files, r=alexcrichton 2020-05-14 18:21:50 +02:00
librustc_resolve Alter wording for use foo::self help 2020-05-19 22:12:41 +02:00
librustc_save_analysis Fix ICE in -Zsave-analysis 2020-05-18 22:55:04 +01:00
librustc_session Rollup merge of #72364 - jsgf:remove-unused-deps, r=Mark-Simulacrum 2020-05-20 14:21:11 +02:00
librustc_span Implement att_syntax option 2020-05-18 14:41:33 +01:00
librustc_symbol_mangling Remove unused dependencies 2020-05-19 14:34:23 -07:00
librustc_target Auto merge of #71769 - petrochenkov:crto, r=cuviper 2020-05-20 05:47:10 +00:00
librustc_trait_selection Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
librustc_traits chalk 2020-05-17 11:06:35 +02:00
librustc_ty auto implDiscriminantKind for every type 2020-05-19 10:25:13 +02:00
librustc_typeck Auto merge of #70705 - lcnr:generic_discriminant, r=nikomatsakis 2020-05-21 03:48:47 +00:00
librustdoc Assume unevaluated consts are equal to the other consts and add ConstEquate obligation. This delays 2020-05-17 11:01:02 +02:00
libserialize linker: More systematic handling of CRT objects 2020-05-14 10:45:11 +03:00
libstd Auto merge of #71447 - cuviper:unsized_cow, r=dtolnay 2020-05-19 08:08:48 +00:00
libterm Replace filter_map().next() calls with find_map() 2020-04-24 20:03:45 -07:00
libtest Fix clippy warnings 2020-05-11 17:13:32 +02:00
libunwind Use -fvisibility=hidden for libunwind 2020-05-05 12:41:23 -07:00
llvm-project@943dbddc8e Update LLVM submodule 2020-05-20 20:14:16 +02:00
rtstartup
rustc
rustllvm Implement asm! codegen 2020-05-18 14:41:32 +01:00
stdarch@ec6fccd34c Update stdarch 2020-05-09 16:03:40 -04:00
test Auto merge of #72205 - ecstatic-morse:nrvo, r=oli-obk 2020-05-21 07:16:44 +00:00
tools Auto merge of #72339 - ehuss:update-cargo, r=ehuss 2020-05-20 02:22:44 +00:00
README.md
stage0.txt Bump rustfmt to most recently shipped 2020-04-25 09:25:33 -04:00

This directory contains the source code of the rust project, including:

  • rustc and its tests
  • libstd
  • Various submodules for tools, like rustdoc, rls, etc.

For more information on how various parts of the compiler work, see the rustc dev guide.