rust/src
bors 255a4c58f5 Auto merge of #72632 - jonas-schievink:dest-prop, r=oli-obk
Implement a generic Destination Propagation optimization on MIR

This takes the work that was originally started by `@eddyb` in https://github.com/rust-lang/rust/pull/47954, and then explored by me in https://github.com/rust-lang/rust/pull/71003, and implements it in a general (ie. not limited to acyclic CFGs) and dataflow-driven way (so that no additional infrastructure in rustc is needed).

The pass is configured to run at `mir-opt-level=2` and higher only. To enable it by default, some followup work on it is still needed:
* Performance needs to be evaluated. I did some light optimization work and tested against `tuple-stress`, which caused trouble in my last attempt, but didn't go much in depth here.
  * We can also enable the pass only at `opt-level=2` and higher, if it is too slow to run in debug mode, but fine when optimizations run anyways.
* Debuginfo needs to be fixed after locals are merged. I did not look into what is required for this.
* Live ranges of locals (aka `StorageLive` and `StorageDead`) are currently deleted. We either need to decide that this is fine, or if not, merge the variable's live ranges (or remove these statements entirely – https://github.com/rust-lang/rust/issues/68622).

Some benchmarks of the pass were done in https://github.com/rust-lang/rust/pull/72635.
2020-09-20 01:38:26 +00:00
..
bootstrap Rollup merge of #76796 - jyn514:wrong-stage, r=shepmaster 2020-09-19 11:47:54 +02:00
build_helper
ci Make sure we build target-only things (e.g., docs) for host platforms too 2020-09-18 12:00:53 -04:00
doc Auto merge of #76804 - tmandry:rollup-nwntt3q, r=tmandry 2020-09-16 20:18:19 +00:00
etc
librustdoc Auto merge of #76782 - lzutao:rd-cap, r=jyn514 2020-09-18 21:31:08 +00:00
llvm-project@833dd1e3d4
test Auto merge of #72632 - jonas-schievink:dest-prop, r=oli-obk 2020-09-20 01:38:26 +00:00
tools Rollup merge of #76798 - alistair23:alistair/rv32-linux, r=jyn514 2020-09-19 11:47:56 +02:00
README.md
stage0.txt

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

  • The test suite
  • The bootstrapping build system
  • Various submodules for tools, like rustdoc, rls, etc.

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