| Age | Commit message (Collapse) | Author | Lines | |
|---|---|---|---|---|
| 2023-08-16 | Use Terminator::edges for backward analysis too. | Camille GILLOT | -1/+1 | |
| 2023-08-16 | Only evaluate yield place after resume in liveness. | Camille GILLOT | -15/+31 | |
| 2023-08-16 | Rename YieldResumeEffect. | Camille GILLOT | -6/+6 | |
| 2023-08-16 | Make TerminatorEdge plural. | Camille GILLOT | -15/+15 | |
| 2023-08-16 | Rename MaybeUnreachable. | Camille GILLOT | -7/+6 | |
| 2023-08-16 | Only run MaybeInitializedPlaces once for drop elaboration. | Camille GILLOT | -9/+63 | |
| 2023-08-16 | Allow apply_terminator_effect to customize edges. | Camille GILLOT | -99/+78 | |
| 2023-08-16 | Move domain_size to GenKillAnalysis. | Camille GILLOT | -0/+36 | |
| 2023-08-16 | Move initialization dataflow impls into their own module. | Camille GILLOT | -749/+756 | |
| 2023-08-16 | Simplify for_each_mut_borrow. | Camille GILLOT | -58/+9 | |
| 2023-07-19 | Turn copy into moves during DSE. | Camille GILLOT | -1/+2 | |
| 2023-07-12 | Re-format let-else per rustfmt update | Mark Rousskov | -2/+6 | |
| 2023-07-04 | bring back un_derefer and rewrite it again | DrMeepster | -4/+4 | |
| 2023-06-08 | Auto merge of #108293 - Jarcho:mut_analyses, r=eholk | bors | -66/+74 | |
| Take MIR dataflow analyses by mutable reference The main motivation here is any analysis requiring dynamically sized scratch memory to work. One concrete example would be pointer target tracking, where tracking the results of a dereference can result in multiple possible targets. This leads to processing multi-level dereferences requiring the ability to handle a changing number of potential targets per step. A (simplified) function for this would be `fn apply_deref(potential_targets: &mut Vec<Target>)` which would use the scratch space contained in the analysis to send arguments and receive the results. The alternative to this would be to wrap everything in a `RefCell`, which is what `MaybeRequiresStorage` currently does. This comes with a small perf cost and loses the compiler's guarantee that we don't try to take multiple borrows at the same time. For the implementation: * `AnalysisResults` is an unfortunate requirement to avoid an unconstrained type parameter error. * `CloneAnalysis` could just be `Clone` instead, but that would result in more work than is required to have multiple cursors over the same result set. * `ResultsVisitor` now takes the results type on in each function as there's no other way to have access to the analysis without cloning it. This could use an associated type rather than a type parameter, but the current approach makes it easier to not care about the type when it's not necessary. * `MaybeRequiresStorage` now no longer uses a `RefCell`, but the graphviz formatter now does. It could be removed, but that would require even more changes and doesn't really seem necessary. | ||||
| 2023-05-29 | unique borrows are mutating uses | lcnr | -2/+1 | |
| 2023-05-18 | Take MIR dataflow analyses by mutable reference. | Jason Newcomb | -66/+74 | |
| 2023-05-09 | Explicitly skip arguments. | Camille GILLOT | -0/+1 | |
| 2023-05-09 | Implement SSA-based reference propagation. | Camille GILLOT | -1/+67 | |
| 2023-04-29 | Make PlaceMention a non-mutating use. | Camille GILLOT | -0/+1 | |
| 2023-04-24 | Split `{Idx, IndexVec, IndexSlice}` into their own modules | Maybe Waffle | -1/+1 | |
| 2023-04-06 | Rename `Abort` terminator to `Terminate` | Gary Guo | -3/+3 | |
| Unify terminology used in unwind action and terminator, and reflect the fact that a nounwind panic is triggered instead of an immediate abort is triggered for this terminator. | ||||
| 2023-03-09 | Introduce a no-op PlaceMention statement for `let _ =`. | Camille GILLOT | -0/+2 | |
| 2023-03-07 | Remove DropAndReplace terminator | Giacomo Pasini | -4/+1 | |
| PR 107844 made DropAndReplace unused, let's remove it completely from the codebase. | ||||
| 2023-02-16 | Replace some `then`s with some `then_some`s | Maybe Waffle | -1/+1 | |
| 2023-02-16 | `if $c:expr { Some($r:expr) } else { None }` =>> `$c.then(|| $r)` | Maybe Waffle | -7/+1 | |
| 2023-02-06 | Only exclude locals if the place is not indirect. | Camille GILLOT | -1/+3 | |
| 2023-01-23 | Create stable metric to measure long computation in Const Eval | Bryan Garza | -0/+2 | |
| 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-17 | Remove double spaces after dots in comments | Maybe Waffle | -1/+1 | |
| 2022-12-20 | rustc: Remove needless lifetimes | Jeremy Stucki | -2/+2 | |
| 2022-12-13 | Don't require owned data in `MaybeStorageLive` | Jakob Degen | -6/+7 | |
| 2022-11-26 | Rewrite 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-09-06 | Generalize the Assume intrinsic statement to a general Intrinsic statement | Oli Scherer | -4/+2 | |
| 2022-09-06 | Lower the assume intrinsic to a MIR statement | Oli Scherer | -0/+2 | |
| 2022-08-25 | Add method that applies DefUse effect | Tomasz Miąsko | -15/+11 | |
| 2022-08-25 | Fix liveness analysis for yield terminators | Tomasz Miąsko | -32/+61 | |
| A resume place is evaluated and assigned to only after a yield terminator resumes. Ensure that locals used when evaluating the resume place are live across the yield. | ||||
| 2022-08-01 | Remove redundant `TransferWrapper` struct | Tomasz Miąsko | -14/+2 | |
| 2022-07-13 | Rename `debugging_opts` to `unstable_opts` | Joshua Nelson | -4/+4 | |
| This is no longer used only for debugging options (e.g. `-Zoutput-width`, `-Zallow-features`). Rename it to be more clear. | ||||
| 2022-07-12 | add new rval, pull deref early | ouz-a | -1/+2 | |
| 2022-07-06 | Fix missing word in comment | pierwill | -1/+1 | |
| 2022-07-01 | cleanup mir visitor for `rustc::pass_by_value` | lcnr | -5/+5 | |
| 2022-06-17 | Auto merge of #97863 - JakobDegen:bitset-choice, r=nnethercote | bors | -2/+2 | |
| `BitSet` related perf improvements This commit makes two changes: 1. Changes `MaybeLiveLocals` to use `ChunkedBitSet` 2. Overrides the `fold` method for the iterator for `ChunkedBitSet` I have local benchmarks verifying that each of these changes individually yield significant perf improvements to #96451 . I'm hoping this will be true outside of that context too. If that is not the case, I'll try to gate things on where they help as needed r? `@nnethercote` who I believe was working on closely related things, cc `@tmiasko` because of the destprop pr | ||||
| 2022-06-14 | `BitSet` perf improvements | Jakob Degen | -2/+2 | |
| This commit makes two changes: 1. Changes `MaybeLiveLocals` to use `ChunkedBitSet` 2. Overrides the `fold` method for the iterator for `ChunkedBitSet` | ||||
| 2022-06-12 | Merge arms in borrowed locals transfer function | Tomasz Miąsko | -7/+1 | |
| 2022-06-12 | Remove duplicated implementations of borrowed locals analysis | Tomasz Miąsko | -0/+21 | |
| 2022-06-08 | Rollup merge of #97597 - tmiasko:simplify-locals-side-effects, ↵ | Dylan DPC | -6/+3 | |
| r=RalfJung,JakobDegen Preserve unused pointer to address casts Fixes #97421. cc `@RalfJung` | ||||
| 2022-06-07 | Preserve unused pointer to address casts | Tomasz Miąsko | -6/+3 | |
| 2022-06-07 | Remove `AlwaysLiveLocals` wrapper struct | Tomasz Miąsko | -3/+2 | |
| It is just a wrapper around a `BitSet` and doesn't have any functionality of its own. | ||||
| 2022-05-31 | Add a pointer to address cast kind | Tomasz Miąsko | -15/+8 | |
| A pointer to address cast are often special-cased. Introduce a dedicated cast kind to make them easy distinguishable. | ||||
| 2022-05-24 | Add dead store elimination pass | Jakob Degen | -22/+161 | |
| 2022-05-23 | Refactor call terminator to always hold a destination place | Jakob Degen | -8/+6 | |
