2016-07-07 23:40:01 +00:00
|
|
|
This folder contains tests for MIR optimizations.
|
|
|
|
|
2020-04-07 17:47:58 +00:00
|
|
|
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).
|
2020-03-11 10:49:00 +00:00
|
|
|
|
|
|
|
# `--bless`able 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.
|
|
|
|
|
2022-08-09 08:44:32 +00:00
|
|
|
## Unit testing
|
|
|
|
|
|
|
|
If you are only testing the behavior of a particular mir-opt pass on some specific input (as is
|
|
|
|
usually the case), you should add
|
|
|
|
|
|
|
|
```
|
|
|
|
// unit-test: PassName
|
|
|
|
```
|
|
|
|
|
|
|
|
to the top of the file. This makes sure that other passes don't run which means you'll get the input
|
|
|
|
you expected and your test won't break when other code changes.
|
|
|
|
|
2020-03-11 10:49:00 +00:00
|
|
|
## 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
|
|
|
|
```
|