rust/src/test/mir-opt
bors 3fe4dd2dda Auto merge of #71953 - oli-obk:const_prop_deaggregates, r=wesleywiser
Const prop aggregates even if partially or fully modified

r? @wesleywiser

cc @rust-lang/wg-mir-opt I'm moderately scared of this change, but I'm confident in having reviewed all the cases.
2020-05-11 07:23:31 +00:00
..
address-of Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
array-index-is-temporary Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
basic_assignment Bless mir-opt tests 2020-05-09 10:51:39 +01:00
box_expr Bless mir-opt tests 2020-05-09 10:51:39 +01:00
byte_slice Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
combine_array_len Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
const-promotion-extern-static Bless mir-opt tests 2020-05-09 10:51:39 +01:00
const_allocation Rollup merge of #71590 - RalfJung:mir-dump-pointers, r=oli-obk 2020-04-30 15:23:13 -07:00
const_allocation2 Rollup merge of #71590 - RalfJung:mir-dump-pointers, r=oli-obk 2020-04-30 15:23:13 -07:00
const_allocation3 Rollup merge of #71590 - RalfJung:mir-dump-pointers, r=oli-obk 2020-04-30 15:23:13 -07:00
const_prop Auto merge of #71953 - oli-obk:const_prop_deaggregates, r=wesleywiser 2020-05-11 07:23:31 +00:00
copy_propagation Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
copy_propagation_arg Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
deaggregator_test Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
deaggregator_test_enum Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
deaggregator_test_enum_2 Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
deaggregator_test_multiple Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
exponential-or Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
generator-drop-cleanup Bless mir-opt tests 2020-05-09 10:51:39 +01:00
generator-storage-dead-unwind Bless mir-opt tests 2020-05-09 10:51:39 +01:00
generator-tiny Fix test 2020-04-29 01:21:24 +01:00
graphviz Bless mir-opt tests 2020-05-09 10:51:39 +01:00
inline Bless mir-opt tests 2020-05-09 10:51:39 +01:00
issue-38669 Bless mir-opt tests 2020-05-09 10:51:39 +01:00
issue-41110 Bless mir-opt tests 2020-05-09 10:51:39 +01:00
issue-41697 Bless mir-opt tests 2020-05-09 10:51:39 +01:00
issue-41888 Bless mir-opt tests 2020-05-09 10:51:39 +01:00
issue-49232 Bless mir-opt tests 2020-05-09 10:51:39 +01:00
issue-62289 Bless mir-opt tests 2020-05-09 10:51:39 +01:00
loop_test Bless mir-opt tests 2020-05-09 10:51:39 +01:00
match-arm-scopes Bless mir-opt tests 2020-05-09 10:51:39 +01:00
match_false_edges Bless mir-opt tests 2020-05-09 10:51:39 +01:00
match_test Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
nll Bless mir-opt tests 2020-05-09 10:51:39 +01:00
no-drop-for-inactive-variant Bless mir-opt tests 2020-05-09 10:51:39 +01:00
no-spurious-drop-after-call Bless mir-opt tests 2020-05-09 10:51:39 +01:00
packed-struct-drop-aligned Bless mir-opt tests 2020-05-09 10:51:39 +01:00
remove-never-const Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
remove_fake_borrows Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
retag Bless mir-opt tests 2020-05-09 10:51:39 +01:00
simple-match Bless mir-opt tests 2020-05-09 10:51:39 +01:00
simplify-arm-identity Allow Locals to be propagated into and from, but restricted to their own block 2020-04-28 00:44:50 -04:00
simplify-locals-fixedpoint Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
simplify-locals-removes-unused-consts Added MIR constant propagation of Scalars into function call arguments 2020-05-02 00:40:03 -04:00
simplify-locals-removes-unused-discriminant-reads Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
simplify_cfg Bless mir-opt tests 2020-05-09 10:51:39 +01:00
simplify_if Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
simplify_match Changed simplify_match output query because it had become outdated 2020-04-28 00:53:48 -04:00
simplify_try Bless mir-opt tests 2020-05-09 10:51:39 +01:00
slice-drop-shim Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
storage_live_dead_in_statics Bless mir-opt tests 2020-05-09 10:51:39 +01:00
storage_ranges Rollup merge of #70950 - nikomatsakis:leak-check-nll-2, r=matthewjasper 2020-04-30 20:15:20 +02:00
uniform_array_move_out Bless mir-opt tests 2020-05-09 10:51:39 +01:00
uninhabited-enum Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
uninhabited_enum_branching Renamed "undef" stuff to "uninit" 2020-05-07 11:27:29 -04:00
unreachable Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
unreachable_asm Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
unreachable_asm_2 Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
unreachable_diverging Emit basic block ids for statements and terminators in MIR only in -Zverbose mode 2020-04-27 15:16:12 +02:00
unusual-item-types Bless mir-opt tests 2020-05-09 10:51:39 +01:00
while-storage Bless mir-opt tests 2020-05-09 10:51:39 +01:00
address-of.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
array-index-is-temporary.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
basic_assignment.rs Enable --blessing of MIR dumps 2020-03-26 15:26:33 +01:00
box_expr.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
byte_slice.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
combine_array_len.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
const-promotion-extern-static.rs Enable --blessing of MIR dumps 2020-03-26 15:26:33 +01:00
const_allocation.rs Enable --blessing of MIR dumps 2020-03-26 15:26:33 +01:00
const_allocation2.rs Enable --blessing of MIR dumps 2020-03-26 15:26:33 +01:00
const_allocation3.rs Enable --blessing of MIR dumps 2020-03-26 15:26:33 +01:00
copy_propagation.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
copy_propagation_arg.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
deaggregator_test.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
deaggregator_test_enum.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
deaggregator_test_enum_2.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
deaggregator_test_multiple.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
exponential-or.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
generator-drop-cleanup.rs Ignore generator-drop-cleanup on wasm32-bare 2020-04-17 20:37:34 +02:00
generator-storage-dead-unwind.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
generator-tiny.rs Fix test 2020-04-29 01:21:24 +01:00
graphviz.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
issue-38669.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
issue-41110.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
issue-41697.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
issue-41888.rs Add ignore-wasm32-bare to mir-opt tests that need it. 2020-04-08 18:58:49 +00:00
issue-49232.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
issue-62289.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
loop_test.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
match-arm-scopes.rs Add ignore-wasm32-bare to mir-opt tests that need it. 2020-04-08 18:58:49 +00:00
match_false_edges.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
match_test.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
no-drop-for-inactive-variant.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
no-spurious-drop-after-call.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
packed-struct-drop-aligned.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
README.md Remove old mir-opt test format. 2020-04-07 18:02:11 +00:00
remove-never-const.rs Adjust name of never typed const test 2020-04-23 18:07:36 -03:00
remove_fake_borrows.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
retag.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
return_an_array.rs Remove licenses 2018-12-25 21:08:33 -07:00
simple-match.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
simplify-arm-identity.rs Allow Locals to be propagated into and from, but restricted to their own block 2020-04-28 00:44:50 -04:00
simplify-locals-fixedpoint.rs Add test case 2020-04-15 14:34:23 -04:00
simplify-locals-removes-unused-consts.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
simplify-locals-removes-unused-discriminant-reads.rs Remove unused discriminant reads from MIR bodies 2020-04-02 08:14:34 -04:00
simplify_cfg.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
simplify_if.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
simplify_match.rs Changed simplify_match output query because it had become outdated 2020-04-28 00:53:48 -04:00
simplify_try.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
slice-drop-shim.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
storage_live_dead_in_statics.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
storage_ranges.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
uniform_array_move_out.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
uninhabited-enum.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
uninhabited_enum_branching.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
unreachable.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
unreachable_asm.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
unreachable_asm_2.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
unreachable_diverging.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
unusual-item-types.rs Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
while-storage.rs --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00

This folder contains tests for MIR optimizations.

The mir-opt test format emits MIR to extra files that you can automatically update by specifying --bless on the command line (just like ui tests updating .stderr files).

--blessable test format

By default 32 bit and 64 bit targets use the same dump files, which can be problematic in the presence of pointers in constants or other bit width dependent things. In that case you can add

// EMIT_MIR_FOR_EACH_BIT_WIDTH

to your test, causing separate files to be generated for 32bit and 64bit systems.

Emit a diff of the mir for a specific optimization

This is what you want most often when you want to see how an optimization changes the MIR.

// EMIT_MIR $file_name_of_some_mir_dump.diff

Emit mir after a specific optimization

Use this if you are just interested in the final state after an optimization.

// EMIT_MIR $file_name_of_some_mir_dump.after.mir

Emit mir before a specific optimization

This exists mainly for completeness and is rarely useful.

// EMIT_MIR $file_name_of_some_mir_dump.before.mir