PassManager assert: postdomtree usage in scalar-evolution

Hi Chandler.

I recently ran into problems with what looks like a bad interaction between the new pass manager and the legacy pass manager. I try to use PostDominatorTree analysis pass in scalar-evolution (as a transitive requirement) which makes the LegacyPassManager run into an assert:
opt: ../lib/IR/LegacyPassManager.cpp:520: void llvm::PMTopLevelManager::setLastUser(llvm::ArrayRef<llvm::Pass*>, llvm::Pass*): Assertion `AnalysisPass && "Expected analysis pass to exist."' failed.

To reproduce, use the attached patch on ScalarEvolution.cpp and run ./bin/opt -loop-idiom -loop-unroll empty.ll --debug-pass=Arguments
Note: the patch is based on svn revision 281213.

Any idea how to get this working?

Regards,
Christof

scev-PostDom-transitive.patch (2.22 KB)

Hi Chandler.

I’ve raised this in Bugzilla as https://llvm.org/bugs/show_bug.cgi?id=30370

By the way, congrats on becoming a director on the LLVM foundation board.

Regards,
Christof