[PATCH] D105006: [NewPM] Handle passes with params in -print-before/-print-after
Yuanfang Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 28 11:20:32 PDT 2021
ychen added inline comments.
================
Comment at: llvm/lib/IR/PassInstrumentation.cpp:22
StringRef PassName) {
- ClassToPassName[ClassName] = PassName.str();
+ if (ClassToPassName[ClassName].empty())
+ ClassToPassName[ClassName] = PassName.str();
----------------
bjope wrote:
> By adding some printouts when this check fails, I get this (after also having applied D105007):
>
> ```
> PassInstrumentation note: HWAddressSanitizerPass is already mapped to hwasan. It will not be mapped to hwasan<kernal;recover>
> PassInstrumentation note: ModuleInlinerWrapperPass is already mapped to inliner-wrapper. It will not be mapped to inliner-wrapper-no-mandatory-first
> PassInstrumentation note: ModuleInlinerWrapperPass is already mapped to inliner-wrapper. It will not be mapped to scc-oz-module-inliner
> PassInstrumentation note: LoopExtractorPass is already mapped to loop-extract. It will not be mapped to loop-extract-single
> PassInstrumentation note: ModuleAddressSanitizerPass is already mapped to asan-module. It will not be mapped to kasan-module
> PassInstrumentation note: EarlyCSEPass is already mapped to early-cse. It will not be mapped to early-cse-memssa
> PassInstrumentation note: EntryExitInstrumenterPass is already mapped to ee-instrument. It will not be mapped to post-inline-ee-instrument
> PassInstrumentation note: LowerMatrixIntrinsicsPass is already mapped to lower-matrix-intrinsics. It will not be mapped to lower-matrix-intrinsics-minimal
> PassInstrumentation note: AddressSanitizerPass is already mapped to asan. It will not be mapped to asan<kernel>
> PassInstrumentation note: MemorySanitizerPass is already mapped to msan-module. It will not be mapped to msan
> PassInstrumentation note: ThreadSanitizerPass is already mapped to tsan-module. It will not be mapped to tsan
> PassInstrumentation note: MemorySanitizerPass is already mapped to msan-module. It will not be mapped to msan
> PassInstrumentation note: SimplifyCFGPass is already mapped to simplifycfg. It will not be mapped to simplify-cfg
> PassInstrumentation note: SimpleLoopUnswitchPass is already mapped to simple-loop-unswitch. It will not be mapped to unswitch
>
> ```
>
> Not sure if we need to add a one-to-many map to handle some of the above. Or if for example `early-cse-memssa` should be called `early-cse<memssa>` to indicate that it is a specialized version of `early-cse`.
>
> For passes like `ee-instrument.` and `post-inline-ee-instrument` it might be trickier. Should enabling print-after for one of those trigger IR printouts for both? I.e. should they be seen as two different passes, or parameterized versions of the same pass?
>
> I also think it is just confusing to have both `simplifycfg` and `simplify-cfg<>`, as well as both `simple-loop-unswitch` and `unswitch<>`.
>
> Not sure what to do with the sanitizer passes that both exist as module and function passes, using the same class name.
> By adding some printouts when this check fails, I get this (after also having applied D105007):
>
> ```
> PassInstrumentation note: HWAddressSanitizerPass is already mapped to hwasan. It will not be mapped to hwasan<kernal;recover>
> PassInstrumentation note: ModuleInlinerWrapperPass is already mapped to inliner-wrapper. It will not be mapped to inliner-wrapper-no-mandatory-first
> PassInstrumentation note: ModuleInlinerWrapperPass is already mapped to inliner-wrapper. It will not be mapped to scc-oz-module-inliner
> PassInstrumentation note: LoopExtractorPass is already mapped to loop-extract. It will not be mapped to loop-extract-single
> PassInstrumentation note: ModuleAddressSanitizerPass is already mapped to asan-module. It will not be mapped to kasan-module
> PassInstrumentation note: EarlyCSEPass is already mapped to early-cse. It will not be mapped to early-cse-memssa
> PassInstrumentation note: EntryExitInstrumenterPass is already mapped to ee-instrument. It will not be mapped to post-inline-ee-instrument
> PassInstrumentation note: LowerMatrixIntrinsicsPass is already mapped to lower-matrix-intrinsics. It will not be mapped to lower-matrix-intrinsics-minimal
> PassInstrumentation note: AddressSanitizerPass is already mapped to asan. It will not be mapped to asan<kernel>
> PassInstrumentation note: MemorySanitizerPass is already mapped to msan-module. It will not be mapped to msan
> PassInstrumentation note: ThreadSanitizerPass is already mapped to tsan-module. It will not be mapped to tsan
> PassInstrumentation note: MemorySanitizerPass is already mapped to msan-module. It will not be mapped to msan
> PassInstrumentation note: SimplifyCFGPass is already mapped to simplifycfg. It will not be mapped to simplify-cfg
> PassInstrumentation note: SimpleLoopUnswitchPass is already mapped to simple-loop-unswitch. It will not be mapped to unswitch
>
> ```
>
>
> Not sure if we need to add a one-to-many map to handle some of the above. Or if for example `early-cse-memssa` should be called `early-cse<memssa>` to indicate that it is a specialized version of `early-cse`.
I think we really need to get rid of the global map. (D97722)
> For passes like `ee-instrument.` and `post-inline-ee-instrument` it might be trickier. Should enabling print-after for one of those trigger IR printouts for both? I.e. should they be seen as two different passes, or parameterized versions of the same pass?
I think it should be "parameterized versions of the same pass" which is exactly what it is.
> I also think it is just confusing to have both `simplifycfg` and `simplify-cfg<>`, as well as both `simple-loop-unswitch` and `unswitch<>`.
Agree. This is the same issue as "ee-instrument". We should have one name for a pass and using "<>" to pass parameters from commandline.
> Not sure what to do with the sanitizer passes that both exist as module and function passes, using the same class name.
Maybe some mangling scheme, like "msan#m<>" for module pass, "msan#f<>" for function pass, and so on.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105006/new/
https://reviews.llvm.org/D105006
More information about the llvm-commits
mailing list