| Age | Commit message (Collapse) | Author | Lines | |
|---|---|---|---|---|
| 2023-09-28 | Unconditionally run `RevealAll` pass and run it earlier | Oli Scherer | -13/+37 | |
| 2023-09-24 | Embed simplification into VnState. | Camille GILLOT | -4/+4 | |
| 2023-09-24 | Add global value numbering pass. | Camille GILLOT | -12/+4 | |
| 2023-09-23 | Bless mir-opt | Camille GILLOT | -49/+66 | |
| 2023-09-21 | adjust how closure/generator types and rvalues are printed | Ralf Jung | -42/+42 | |
| 2023-08-30 | lower ExprKind::Use, LogicalOp::Or and UnOp::Not | Ding Xiang Fei | -2/+4 | |
| Co-authored-by: Abdulaziz Ghuloum <aghuloum@gmail.com> | ||||
| 2023-08-24 | make MIR less verbose | Ralf Jung | -13/+13 | |
| 2023-08-24 | bless more mir-opt tests by hand | Ralf Jung | -1/+1 | |
| 2023-08-24 | when terminating during unwinding, show the reason why | Ralf Jung | -12/+12 | |
| 2023-08-17 | Bless mir-opt tests. | Camille GILLOT | -10/+22 | |
| 2023-08-03 | bless | Michael Goulet | -0/+79 | |
| 2023-08-03 | Explicitly don't inline user-written rust-call fns | Michael Goulet | -200/+94 | |
| 2023-08-03 | Only unpack tupled args in inliner if we expect args to be unpacked | Michael Goulet | -6/+80 | |
| 2023-08-03 | Negative test for inlining `<Box<dyn Fn()> as Fn<()>>::call` | Michael Goulet | -0/+39 | |
| 2023-07-20 | Always propagate into operands. | Camille GILLOT | -60/+28 | |
| 2023-07-19 | Turn copy into moves during DSE. | Camille GILLOT | -10/+10 | |
| 2023-07-10 | Enable by default. | Camille GILLOT | -22/+10 | |
| 2023-07-07 | Rename `adjustment::PointerCast` and variants using it to `PointerCoercion` | Nilstrieb | -8/+8 | |
| It makes it sound like the `ExprKind` and `Rvalue` are supposed to represent all pointer related casts, when in reality their just used to share a some enum variants. Make it clear there these are only coercion to make it clear why only some pointer related "casts" are in the enum. | ||||
| 2023-06-23 | Bless tests | Gary Guo | -61/+61 | |
| 2023-06-19 | Promote unchecked_add/sub/mul/shl/shr to mir::BinOp | Scott McMurray | -64/+40 | |
| 2023-06-19 | Auto merge of #112724 - scottmcm:simpler-unchecked-shifts, r=Mark-Simulacrum | bors | -8/+420 | |
| [libs] Simplify `unchecked_{shl,shr}` There's no need for the `const_eval_select` dance here. And while I originally wrote the `.try_into().unwrap_unchecked()` implementation here, it's kinda a mess in MIR -- this new one is substantially simpler, as shown by the old one being above the inlining threshold but the new one being below it in the `mir-opt/inline/unchecked_shifts` tests. We don't need `u32::checked_shl` doing a dance through both `Result` *and* `Option` 🙃 | ||||
| 2023-06-17 | Auto merge of #100036 - DrMeepster:box_free_free_box, r=oli-obk | bors | -12/+17 | |
| Remove `box_free` lang item This PR removes the `box_free` lang item, replacing it with `Box`'s `Drop` impl. Box dropping is still slightly magic because the contained value is still dropped by the compiler. | ||||
| 2023-06-16 | [libs] Simplify `unchecked_{shl,shr}` | Scott McMurray | -8/+420 | |
| There's no need for the `const_eval_select` dance here. And while I originally wrote the `.try_into().unwrap_unchecked()` implementation here, it's kinda a mess in MIR -- this new one is substantially simpler, as shown by the old one being above the inlining threshold but the new one being below it. | ||||
| 2023-06-16 | remove box_free and replace with drop impl | DrMeepster | -12/+17 | |
| 2023-06-16 | Ignore the always part of #[inline(always)] in MIR inlining | Ben Kimock | -929/+343 | |
| 2023-06-15 | Remove comments from mir-opt MIR dumps | Ben Kimock | -2902/+2325 | |
| 2023-06-12 | bless mir-opt | Pietro Albini | -7/+2060 | |
| To reproduce the changes in this commit locally: - Run `./x test tidy` and remove all the output files not associated with a test file anymore, as reported by tidy. - Run `./x test tests/mir-opt --bless` to generate the new outputs. | ||||
| 2023-06-12 | properly mark tests that require panic=abort | Pietro Albini | -19/+20 | |
| 2023-06-03 | Only check inlining counter after recusing. | Camille GILLOT | -43/+140 | |
| 2023-05-31 | Enable ScalarReplacementOfAggregates | Ben Kimock | -216/+184 | |
| 2023-05-28 | Auto merge of #111813 - scottmcm:pretty-mir, r=cjgillot | bors | -210/+210 | |
| MIR: opt-in normalization of `BasicBlock` and `Local` numbering This doesn't matter at all for actual codegen, but after spending some time reading pre-codegen MIR, I was wishing I didn't have to jump around so much in reading post-inlining code. So this add two passes that are off by default for every mir level, but can be enabled (`-Zmir-enable-passes=+ReorderBasicBlocks,+ReorderLocals`) for humans. | ||||
| 2023-05-21 | Normalize block and local orders in mir-opt tests | Scott McMurray | -210/+210 | |
| Since this only affects `PreCodegen MIR, and it would be nice for that to be resilient to permutations of things that don't affect the actual semantic behaviours. | ||||
| 2023-05-20 | Don't inline functions with unsized args | Jakob Degen | -0/+65 | |
| 2023-05-14 | Merge return place with other locals in CopyProp. | Camille GILLOT | -86/+468 | |
| 2023-05-08 | Disable nrvo mir opt | Jakob Degen | -468/+86 | |
| 2023-04-23 | Auto merge of #110705 - saethlin:ignore-locals-cost, r=cjgillot | bors | -48/+450 | |
| Remove the size of locals heuristic in MIR inlining This heuristic doesn't necessarily correlate to complexity of the MIR Body. In particular, a lot of straight-line code in MIR tends to never reuse a local, even though any optimizer would effectively reuse the storage or just put everything in registers. So it doesn't even necessarily make sense that this would be a stack size heuristic. So... what happens if we just delete the heuristic? The benchmark suite improves significantly. Less heuristics better? r? `@cjgillot` | ||||
| 2023-04-22 | Remove the size of locals heuristic in MIR inlining | Ben Kimock | -48/+450 | |
| 2023-04-22 | Turn on ConstDebugInfo pass. | Wesley Wiser | -1/+1 | |
| 2023-04-20 | Run combine_duplicate_switch_targets after the simplification that produces them | Ben Kimock | -1/+1 | |
| 2023-04-17 | fix codegen difference | Deadbeef | -26/+66 | |
| 2023-04-17 | bless mir-opt | Deadbeef | -438/+28 | |
| 2023-04-07 | ./x.py test --bless | Tomasz MiÄ…sko | -182/+296 | |
| 2023-04-06 | Ignore many tests on wasm32 | Gary Guo | -108/+118 | |
| 2023-04-06 | Bless tests | Gary Guo | -24/+24 | |
| 2023-04-05 | Bless tests | Thom Chiovoloni | -11/+8 | |
| 2023-03-31 | Auto merge of #98112 - saethlin:mir-alignment-checks, r=oli-obk | bors | -4/+5 | |
| Insert alignment checks for pointer dereferences when debug assertions are enabled Closes https://github.com/rust-lang/rust/issues/54915 - [x] Jake tells me this sounds like a place to use `MirPatch`, but I can't figure out how to insert a new basic block with a new terminator in the middle of an existing basic block, using `MirPatch`. (if nobody else backs up this point I'm checking this as "not actually a good idea" because the code looks pretty clean to me after rearranging it a bit) - [x] Using `CastKind::PointerExposeAddress` is definitely wrong, we don't want to expose. Calling a function to get the pointer address seems quite excessive. ~I'll see if I can add a new `CastKind`.~ `CastKind::Transmute` to the rescue! - [x] Implement a more helpful panic message like slice bounds checking. r? `@oli-obk` | ||||
| 2023-03-25 | Ignore the unwrap_unchecked test on wasm32-unknown-unknown | Ben Kimock | -3/+4 | |
| 2023-03-23 | A MIR transform that checks pointers are aligned | Ben Kimock | -4/+5 | |
| 2023-03-18 | Enable inlining of diverging functions | Ben Kimock | -0/+557 | |
| 2023-03-13 | Generalize operation. | Camille GILLOT | -58/+58 | |
