The method getLoopPassPreservedAnalyses should not mark MemorySSA as
preserved, because it's being called in a lot of passes that do not
preserve MemorySSA.
Instead, mark the MemorySSA analysis as preserved by each pass that does
preserve it.
These changes only affect the new pass mananger.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
LGTM
Any chance you can add a test that shows one of the problems where verifying MemorySSA fails because we get a "preserved" copy after a loop pass that doesn't actually preserve it?
Fine to submit the patch whenever, and just try ta add a test case when its convenient.
Comment Actions
I wasn't yet able to reproduce this with opt -aa-pipeline=default -passes="default<O3>", only with clang -cc1 -O3 -fexperimental-new-pass-manager.
I'll keep working on getting a test, but I checked this in for now, since it's necessary to fix crashes for the combination of MemorySSA + NewPassManager.