-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Tracking issue for MIR simplification opportunities #111442
Copy link
Copy link
Open
Labels
A-mir-optArea: MIR optimizationsArea: MIR optimizationsC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.C-optimizationCategory: An issue highlighting optimization opportunities or PRs implementing suchCategory: An issue highlighting optimization opportunities or PRs implementing such
Metadata
Metadata
Assignees
Labels
A-mir-optArea: MIR optimizationsArea: MIR optimizationsC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.C-optimizationCategory: An issue highlighting optimization opportunities or PRs implementing suchCategory: An issue highlighting optimization opportunities or PRs implementing such
Type
Fields
Give feedbackNo fields configured for issues without a type.
This issue is designed to be a list of ideas to simplify MIR during optimization passes. Contributors are welcome to enhance this list.
Note: not all optimizations on this list are desirable. Some are put there to track why they were not implemented.
Instruction simplification
Avoid calling
Index::indexfor slices of arrays and subslices, and replace if with a direct projection:slice[constant1..constant2]to useSubslice { from: constant1, to: constant2, from_end: false};slice[..constant2]to useSubslice { from: 0, to: constant2, from_end: false};slice[constant1..]to useSubslice { from: constant1, to: 0, from_end: true};slice[..]to directly reuseslice;slice[constant1..slice.len() - constant2]to useSubslice { from: constant1, to: constant2, from_end: true};slice[..slice.len() - constant2]to useSubslice { from: 0, to: constant2, from_end: true}.Indexprojection Tracking issue for MIR simplification opportunities #111442 (comment)Simple operations:
i binop jby a statement directly in MIR, instead of inlining the trait method<T as BinOp>::bin_opTracking issue for MIR simplification opportunities #111442 (comment)Aggregates:
Perform simplifications listed in clippy's perf lints #111442 (comment).
Compile-time evaluation
Control-flow graph
SwitchInt(operand, [x -> bb, unreachable])by assume + goto --> Replace switch to unreachable by assume statements #113970