Is DependenceAnalysisWrapperPass IsCFGOnlyPass 'true' correct?

DependenceAnalysisWrapperPass is marked as IsCFGOnlyPass true. Unfortunately, it requires ScalarEvolutionWrapperPass, which is not a cfg only pass (IsCFGOnlyPass false). This means that the pass manager may remove the ScalarEvolutionWrapperPass, but leave DependenceAnalysisWrapperPass as preserved, if a transform is marked as setPreservedCFG(). This will then cause PMTopLevelManager::setLastUser to fail, when the next pass requires DependenceAnalysisWrapperPass. Since DependenceAnalysisWrapperPass is still available, the assumption is that the required analyses are still available.

In any case, the dependence analysis can change even if the CFG is preserved (i.e. changing a GEP). A transform that doesn’t change the CFG should reasonably expect to call setPreservedCFG(). I think that it should be marked as not CFG only.

Comments?

Mark