about summary refs log tree commit diff
path: root/compiler/rustc_mir_dataflow
AgeCommit message (Collapse)AuthorLines
2023-02-05Run SROA to fixpoint.Camille GILLOT-1/+1
2023-02-05Simplify construction of replacement map.Camille GILLOT-1/+1
2023-01-30Treat Drop as a rmw operationGiacomo Pasini-9/+17
Previously, a Drop terminator was considered a move in MIR. This commit changes the behavior to only treat Drop as a mutable access to the dropped place. In order for this change to be correct, we need to guarantee that a) A dropped value won't be used again b) Places that appear in a drop won't be used again before a subsequent initialization. We can ensure this to be correct at MIR construction because Drop will only be emitted when a variable goes out of scope, thus having: (a) as there is no way of reaching the old value. drop-elaboration will also remove any uninitialized drop. (b) as the place can't be named following the end of the scope. However, the initialization status, previously tracked by moves, should also be tied to the execution of a Drop, hence the additional logic in the dataflow analyses.
2023-01-23Create stable metric to measure long computation in Const EvalBryan Garza-1/+5
This patch adds a `MirPass` that tracks the number of back-edges and function calls in the CFG, adds a new MIR instruction to increment a counter every time they are encountered during Const Eval, and emit a warning if a configured limit is breached.
2023-01-17Remove double spaces after dots in commentsMaybe Waffle-1/+1
2023-01-05Fix `uninlined_format_args` for some compiler cratesnils-15/+15
Convert all the crates that have had their diagnostic migration completed (except save_analysis because that will be deleted soon and apfloat because of the licensing problem).
2023-01-02Fix handling of dead unwinds in backward analysesTomasz Miąsko-1/+1
Dead unwinds set contains a head of an unreachable unwind edge.
2022-12-20rustc: Remove needless lifetimesJeremy Stucki-3/+3
2022-12-20Auto merge of #105880 - Nilstrieb:make-newtypes-less-not-rust, r=oli-obkbors-9/+6
Improve syntax of `newtype_index` This makes it more like proper Rust and also makes the implementation a lot simpler. Mostly just turns weird flags in the body into proper attributes. It should probably also be converted to an attribute macro instead of function-like, but that can be done in a future PR.
2022-12-19Revert "Auto merge of #103880 - b-naber:field-ty-mir, r=lcnr"Rémy Rakic-3/+3
This reverts commit 03770f0e2b60c02db8fcf52fed5fb36aac70cedc, reversing changes made to 01ef4b21dc5251b58bd9c6fd6face2ae95d56da1.
2022-12-18A few small cleanups for `newtype_index`Nilstrieb-6/+3
Remove the `..` from the body, only a few invocations used it and it's inconsistent with rust syntax. Use `;` instead of `,` between consts. As the Rust syntax gods inteded.
2022-12-18Make `#[debug_format]` an attribute in `newtype_index`Nilstrieb-3/+3
This removes the `custom` format functionality as its only user was trivially migrated to using a normal format. If a new use case for a custom formatting impl pops up, you can add it back.
2022-12-16Auto merge of #103880 - b-naber:field-ty-mir, r=lcnrbors-3/+3
Use non-ascribed type as field's type in mir Fixes https://github.com/rust-lang/rust/issues/96514 r? `@lcnr`
2022-12-14Remove one more usage of `mk_substs_trait`Oli Scherer-2/+6
2022-12-13Don't require owned data in `MaybeStorageLive`Jakob Degen-6/+7
2022-12-13Auto merge of #105436 - ↵bors-51/+46
nnethercote:inline-place_contents_drop_state_cannot_differ, r=spastorino Inline and remove `place_contents_drop_state_cannot_differ`. It has a single call site and is hot enough to be worth inlining. And make sure `is_terminal_path` is inlined, too. r? `@ghost`
2022-12-11Rollup merge of #105537 - kadiwa4:remove_some_imports, r=fee1-deadMatthias Krüger-1/+1
compiler: remove unnecessary imports and qualified paths Some of these imports were necessary before Edition 2021, others were already in the prelude. I hope it's fine that this PR is so spread-out across files :/
2022-12-10compiler: remove unnecessary imports and qualified pathsKaDiWa-1/+1
2022-12-09Remove unneeded field from `SwitchTargets`Jakob Degen-6/+4
2022-12-08Inline and remove `place_contents_drop_state_cannot_differ`.Nicholas Nethercote-51/+46
It has a single call site and is hot enough to be worth inlining. And make sure `is_terminal_path` is inlined, too.
2022-12-05fix dupe word typosRageking8-1/+1
2022-12-01Create `format_args` as late as possibleOli Scherer-8/+1
2022-11-26Rewrite dest prop.Jakob Degen-124/+0
This fixes a number of correctness issues from the previous version. Additionally, we use a new strategy which has much better performance charactersitics and also finds more opportunities to apply the optimization.
2022-11-23use no type in ProjectionElem::Field for PlaceBuilder::UpVarb-naber-3/+3
2022-11-21Allow iterators instead of requiring slices that will get turned into iteratorsOli Scherer-1/+1
2022-11-18couple of clippy::perf fixesMatthias Krüger-1/+1
2022-11-12Remove log statement that was commented outJannis Christopher Köhl-2/+0
2022-11-12Exclude locals completely, instead of individual placesJannis Christopher Köhl-29/+18
2022-11-11Add test for repr(transparent) with scalarJannis Christopher Köhl-2/+5
2022-11-10Simplify creation of mapJannis Christopher Köhl-52/+25
2022-11-09Fix struct field tracking and add tests for itJannis Christopher Köhl-7/+7
2022-11-09Completely remove tracking of references for nowJannis Christopher Köhl-135/+37
2022-11-07Fix rebaseJannis Christopher Köhl-2/+1
2022-11-07Small corrections of documentationJannis Christopher Köhl-3/+3
2022-11-07Limit number of tracked places, and some other perf improvementsJannis Christopher Köhl-11/+46
2022-11-07Move HasTop and HasBottom into lattice.rsJannis Christopher Köhl-26/+41
2022-11-07Explicitly match all terminatorsJannis Christopher Köhl-2/+11
2022-11-07Improve documentation of assumptionsJannis Christopher Köhl-65/+51
2022-11-07Improve documentation, plus some small changesJannis Christopher Köhl-76/+126
2022-11-07Add comment for the current retag situationJannis Christopher Köhl-1/+6
2022-11-07Only assume Stacked Borrows if -Zunsound-mir-opts is givenJannis Christopher Köhl-2/+42
2022-11-07Prevent registration inside references if target is !FreezeJannis Christopher Köhl-17/+39
2022-11-07Fix formattingJannis Christopher Köhl-2/+1
2022-11-07Remove `Unknown` state in favor of `Value(Top)`Jannis Christopher Köhl-13/+18
2022-11-07Only track (trivially) freeze typesJannis Christopher Köhl-1/+5
2022-11-07Make more assumptions explicitJannis Christopher Köhl-7/+26
2022-11-07Flood with bottom for Deinit, StorageLive and StorageDeadJannis Christopher Köhl-4/+5
2022-11-07Handle NonDivergingIntrinsic and CopyNonOverlappingJannis Christopher Köhl-3/+12
2022-11-07Update test results after rebaseJannis Christopher Köhl-2/+18
2022-11-07Fix typoJannis Christopher Köhl-1/+1