summary refs log tree commit diff
path: root/tests/mir-opt/inline
AgeCommit message (Collapse)AuthorLines
2023-09-28Unconditionally run `RevealAll` pass and run it earlierOli Scherer-13/+37
2023-09-24Embed simplification into VnState.Camille GILLOT-4/+4
2023-09-24Add global value numbering pass.Camille GILLOT-12/+4
2023-09-23Bless mir-optCamille GILLOT-49/+66
2023-09-21adjust how closure/generator types and rvalues are printedRalf Jung-42/+42
2023-08-30lower ExprKind::Use, LogicalOp::Or and UnOp::NotDing Xiang Fei-2/+4
Co-authored-by: Abdulaziz Ghuloum <aghuloum@gmail.com>
2023-08-24make MIR less verboseRalf Jung-13/+13
2023-08-24bless more mir-opt tests by handRalf Jung-1/+1
2023-08-24when terminating during unwinding, show the reason whyRalf Jung-12/+12
2023-08-17Bless mir-opt tests.Camille GILLOT-10/+22
2023-08-03blessMichael Goulet-0/+79
2023-08-03Explicitly don't inline user-written rust-call fnsMichael Goulet-200/+94
2023-08-03Only unpack tupled args in inliner if we expect args to be unpackedMichael Goulet-6/+80
2023-08-03Negative test for inlining `<Box<dyn Fn()> as Fn<()>>::call`Michael Goulet-0/+39
2023-07-20Always propagate into operands.Camille GILLOT-60/+28
2023-07-19Turn copy into moves during DSE.Camille GILLOT-10/+10
2023-07-10Enable by default.Camille GILLOT-22/+10
2023-07-07Rename `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-23Bless testsGary Guo-61/+61
2023-06-19Promote unchecked_add/sub/mul/shl/shr to mir::BinOpScott McMurray-64/+40
2023-06-19Auto merge of #112724 - scottmcm:simpler-unchecked-shifts, r=Mark-Simulacrumbors-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-17Auto merge of #100036 - DrMeepster:box_free_free_box, r=oli-obkbors-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-16remove box_free and replace with drop implDrMeepster-12/+17
2023-06-16Ignore the always part of #[inline(always)] in MIR inliningBen Kimock-929/+343
2023-06-15Remove comments from mir-opt MIR dumpsBen Kimock-2902/+2325
2023-06-12bless mir-optPietro 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-12properly mark tests that require panic=abortPietro Albini-19/+20
2023-06-03Only check inlining counter after recusing.Camille GILLOT-43/+140
2023-05-31Enable ScalarReplacementOfAggregatesBen Kimock-216/+184
2023-05-28Auto merge of #111813 - scottmcm:pretty-mir, r=cjgillotbors-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-21Normalize block and local orders in mir-opt testsScott 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-20Don't inline functions with unsized argsJakob Degen-0/+65
2023-05-14Merge return place with other locals in CopyProp.Camille GILLOT-86/+468
2023-05-08Disable nrvo mir optJakob Degen-468/+86
2023-04-23Auto merge of #110705 - saethlin:ignore-locals-cost, r=cjgillotbors-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-22Remove the size of locals heuristic in MIR inliningBen Kimock-48/+450
2023-04-22Turn on ConstDebugInfo pass.Wesley Wiser-1/+1
2023-04-20Run combine_duplicate_switch_targets after the simplification that produces themBen Kimock-1/+1
2023-04-17fix codegen differenceDeadbeef-26/+66
2023-04-17bless mir-optDeadbeef-438/+28
2023-04-07./x.py test --blessTomasz MiÄ…sko-182/+296
2023-04-06Ignore many tests on wasm32Gary Guo-108/+118
2023-04-06Bless testsGary Guo-24/+24
2023-04-05Bless testsThom Chiovoloni-11/+8
2023-03-31Auto merge of #98112 - saethlin:mir-alignment-checks, r=oli-obkbors-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-25Ignore the unwrap_unchecked test on wasm32-unknown-unknownBen Kimock-3/+4
2023-03-23A MIR transform that checks pointers are alignedBen Kimock-4/+5
2023-03-18Enable inlining of diverging functionsBen Kimock-0/+557
2023-03-13Generalize operation.Camille GILLOT-58/+58