summary refs log tree commit diff
path: root/src/test/mir-opt/basic_assignment.rs
AgeCommit message (Collapse)AuthorLines
2018-03-23Updated MIR with UserAssertTy in mir-opt tests.David Wood-0/+3
2017-12-03funnel all unwind paths through a single Resume blockAriel Ben-Yehuda-5/+5
This simplifies analysis and borrow-checking because liveness at the resume point can always be simply propagated. Later on, the "dead" Resumes are removed.
2017-11-28tests: update to include move annotations in MIR.Eduard-Mihai Burtescu-3/+3
2017-11-09change MIR dump filenames from `nodeN` to `DefPath`Mikhail Modin-2/+2
2017-08-01rustc_mir::transform::simplify - remove nops firstAriel Ben-Yehuda-14/+8
Removing nops can allow more basic blocks to be merged, but merging basic blocks can't allow for more nops to be removed, so we should remove nops first. This doesn't matter *that* much, because normally we run SimplifyCfg several times, but there's no reason not to do it.
2017-08-01rustc_mir: don't build unused unwind cleanup blocksAriel Ben-Yehuda-13/+13
The unused blocks are removed by SimplifyCfg, but they can cause a significant performance slowdown before they are removed.
2017-06-12Update basic_assignment test to reflect small changes to codegen.Felix S. Klock II-8/+14
2017-05-02simplify the MirPass traits and passes dramaticallyNiko Matsakis-2/+2
Overall goal: reduce the amount of context a mir pass needs so that it resembles a query. - The hooks are no longer "threaded down" to the pass, but rather run automatically from the top-level (we also thread down the current pass number, so that the files are sorted better). - The hook now receives a *single* callback, rather than a callback per-MIR. - The traits are no longer lifetime parameters, which moved to the methods -- given that we required `for<'tcx>` objecs, there wasn't much point to that. - Several passes now store a `String` instead of a `&'l str` (again, no point).
2017-03-03make operands live to the end of their containing expressionAriel Ben-Yehuda-0/+85
In MIR construction, operands need to live exactly until they are used, which is during the (sub)expression that made the call to `as_operand`. Before this PR, operands lived until the end of the temporary scope, which was sometimes unnecessarily longer and sometimes too short. Fixes #38669.