Changeset View
Changeset View
Standalone View
Standalone View
mlir/docs/PassManagement.md
Show First 20 Lines • Show All 986 Lines • ▼ Show 20 Lines | |||||
// note: verifyPasses=false | // note: verifyPasses=false | ||||
module { | module { | ||||
func @foo() { | func @foo() { | ||||
... | ... | ||||
} | } | ||||
} | } | ||||
``` | ``` | ||||
### Local Reproducer Generation | |||||
An additional flag may be passed to | |||||
`PassManager::enableCrashReproducerGeneration`, and specified via | |||||
`pass-pipeline-local-reproducer` on the command line, that signals that the pass | |||||
manager should attempt to generate a "local" reproducer. This will attempt to | |||||
jpienaar: minimal has to me a size connotation (e.g., "minimum amount of code needed to make the bug… | |||||
I'm fine with local. This type of behavior isn't desirable if there are multi-pass interactions. It isn't guaranteed that the problem is with the pass that it is failing. rriddle: I'm fine with local.
This type of behavior isn't desirable if there are multi-pass… | |||||
Not Done ReplyInline ActionsInterestingly local was confusing to me since I thought of it as opposite to "remote" ;) mehdi_amini: Interestingly `local` was confusing to me since I thought of it as opposite to "remote" ;) | |||||
generate a reproducer containing IR right before the pass that fails. This is | |||||
useful for situations where the crash is known to be within a specific pass, or | |||||
when the original input relies on components (like dialects or passes) that may | |||||
Missing space before ( jpienaar: Missing space before ( | |||||
not always be available. | |||||
For example, if the failure in the previous example came from `canonicalize`, | |||||
the following reproducer will be generated: | |||||
```mlir | |||||
// configuration: -pass-pipeline='func(canonicalize)' | |||||
// note: verifyPasses=false | |||||
module { | |||||
func @foo() { | |||||
... | |||||
} | |||||
} | |||||
``` |
minimal has to me a size connotation (e.g., "minimum amount of code needed to make the bug appear when executed."), and here it is more about scope than size (e.g., you only need to run one pass, but your reproducer may be huge). Would "local" or "pass-pipeline-dump-before-first-fail" work? Alternatively, where do you see someone not wanting this behavior?