rust/tests/mir-opt/pre-codegen
bors 9aa232ecc7 Auto merge of #120405 - cjgillot:gvn-pointer, r=oli-obk
Fold pointer operations in GVN

This PR proposes 2 combinations of cast operations in MIR GVN:
- a chain of `PtrToPtr` or `MutToConstPointer` casts can be folded together into a single `PtrToPtr` cast;
- we attempt to evaluate more ptr ops when there is no provenance.

In particular, this allows to read from static slices.

This is not yet sufficient to see through slice operations that use `PtrComponents` (because that's a union), but still a step forward.

r? `@ghost`
2024-02-11 04:24:40 +00:00
..
README.md Add mir-opt tests to track MIR quality. 2023-04-23 17:10:53 +00:00
chained_comparison.bitand.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
chained_comparison.naive.PreCodegen.after.mir update tests that are ignored by debug 2023-09-01 04:01:54 +08:00
chained_comparison.returning.PreCodegen.after.mir update tests that are ignored by debug 2023-09-01 04:01:54 +08:00
chained_comparison.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
checked_ops.checked_shl.PreCodegen.after.mir Enable GVN by default. 2023-12-24 20:08:57 +00:00
checked_ops.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
checked_ops.step_forward.PreCodegen.after.mir Enable by default. 2024-02-09 21:13:51 +00:00
duplicate_switch_targets.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
duplicate_switch_targets.ub_if_b.PreCodegen.after.mir Bless/fix tests 2024-02-08 19:56:30 -05:00
intrinsics.f_u64.PreCodegen.after.mir Always propagate into operands. 2023-07-20 21:30:51 +00:00
intrinsics.f_unit.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
intrinsics.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
issue_117368_print_invalid_constant.main.GVN.32bit.panic-abort.diff Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
issue_117368_print_invalid_constant.main.GVN.32bit.panic-unwind.diff Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
issue_117368_print_invalid_constant.main.GVN.64bit.panic-abort.diff Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
issue_117368_print_invalid_constant.main.GVN.64bit.panic-unwind.diff Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
issue_117368_print_invalid_constant.rs Make ui into mir-opt test. 2023-11-01 16:49:18 +00:00
loops.filter_mapped.PreCodegen.after.mir Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
loops.int_range.PreCodegen.after.mir Enable by default. 2024-02-09 21:13:51 +00:00
loops.mapped.PreCodegen.after.mir Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
loops.rs Enable GVN by default. 2023-12-24 20:08:57 +00:00
loops.vec_move.PreCodegen.after.mir make MIR less verbose 2023-08-24 14:26:26 +02:00
matches_macro.issue_77355_opt.PreCodegen.after.mir Remove ConstGoto and SeparateConstSwitch. 2024-02-09 21:13:53 +00:00
matches_macro.rs Remove ConstGoto and SeparateConstSwitch. 2024-02-09 21:13:53 +00:00
mem_replace.manual_replace.PreCodegen.after.panic-abort.mir Bless/fix tests 2024-02-08 19:56:30 -05:00
mem_replace.manual_replace.PreCodegen.after.panic-unwind.mir Bless/fix tests 2024-02-08 19:56:30 -05:00
mem_replace.mem_replace.PreCodegen.after.panic-abort.mir Bless/fix tests 2024-02-08 19:56:30 -05:00
mem_replace.mem_replace.PreCodegen.after.panic-unwind.mir Bless/fix tests 2024-02-08 19:56:30 -05:00
mem_replace.rs Bless/fix tests 2024-02-08 19:56:30 -05:00
optimizes_into_variable.main.GVN.32bit.panic-abort.diff Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
optimizes_into_variable.main.GVN.32bit.panic-unwind.diff Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
optimizes_into_variable.main.GVN.64bit.panic-abort.diff Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
optimizes_into_variable.main.GVN.64bit.panic-unwind.diff Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
optimizes_into_variable.main.PreCodegen.after.32bit.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.PreCodegen.after.32bit.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.PreCodegen.after.64bit.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.PreCodegen.after.64bit.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff Reorder early post-inlining passes. 2024-01-07 01:42:57 +00:00
optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff Reorder early post-inlining passes. 2024-01-07 01:42:57 +00:00
optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff Reorder early post-inlining passes. 2024-01-07 01:42:57 +00:00
optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff Reorder early post-inlining passes. 2024-01-07 01:42:57 +00:00
optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
optimizes_into_variable.rs Replace legacy ConstProp by GVN. 2023-12-24 20:08:57 +00:00
range_iter.forward_loop.PreCodegen.after.panic-abort.mir Enable by default. 2024-02-09 21:13:51 +00:00
range_iter.forward_loop.PreCodegen.after.panic-unwind.mir Enable by default. 2024-02-09 21:13:51 +00:00
range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
range_iter.range_inclusive_iter_next.PreCodegen.after.panic-abort.mir Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
range_iter.range_inclusive_iter_next.PreCodegen.after.panic-unwind.mir Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
range_iter.range_iter_next.PreCodegen.after.panic-abort.mir Enable GVN by default. 2023-12-24 20:08:57 +00:00
range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir Enable GVN by default. 2023-12-24 20:08:57 +00:00
range_iter.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
simple_option_map.ezmap.PreCodegen.after.mir Enable GVN by default. 2023-12-24 20:08:57 +00:00
simple_option_map.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
slice_filter.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
slice_filter.variant_a-{closure#0}.PreCodegen.after.mir Avoid recording no-op replacements. 2024-01-07 13:54:05 +00:00
slice_filter.variant_b-{closure#0}.PreCodegen.after.mir Enable GVN by default. 2023-12-24 20:08:57 +00:00
slice_index.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir Auto merge of #119672 - cjgillot:dse-sandwich, r=oli-obk 2024-01-16 11:34:16 +00:00
slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir Auto merge of #119672 - cjgillot:dse-sandwich, r=oli-obk 2024-01-16 11:34:16 +00:00
slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_index.slice_index_range.PreCodegen.after.panic-abort.mir Also consider call and yield as MIR SSA. 2023-10-08 16:05:26 +00:00
slice_index.slice_index_range.PreCodegen.after.panic-unwind.mir Also consider call and yield as MIR SSA. 2023-10-08 16:05:26 +00:00
slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_iter.forward_loop.PreCodegen.after.panic-abort.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_iter.range_loop.PreCodegen.after.panic-abort.mir Enable by default. 2024-02-09 21:13:51 +00:00
slice_iter.range_loop.PreCodegen.after.panic-unwind.mir Enable by default. 2024-02-09 21:13:51 +00:00
slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir Fold consecutive PtrToPtr casts. 2024-02-09 21:01:56 +00:00
slice_iter.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-abort.mir Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-unwind.mir Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
slice_iter.slice_iter_next.PreCodegen.after.panic-abort.mir Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
slice_iter.slice_iter_next.PreCodegen.after.panic-unwind.mir Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
spans.outer.PreCodegen.after.panic-abort.mir Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
spans.outer.PreCodegen.after.panic-unwind.mir Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
spans.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
try_identity.new.PreCodegen.after.mir Enable by default. 2024-02-09 21:13:51 +00:00
try_identity.old.PreCodegen.after.mir Sandwich MIR optimizations between DSE. 2024-01-11 09:58:19 +00:00
try_identity.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00

README.md

The goal of this directory is to track the quality of MIR that is given to codegen in a standard -O condiguration.

As such, feel free to --bless whatever changes you get here, so long as doing so doesn't add substantially more MIR.