SSI needs to require DT and DF transitively, since it uses them outside of its runOnF...
authorOwen Anderson <resistor@mac.com>
Sun, 4 Oct 2009 17:47:39 +0000 (17:47 +0000)
committerOwen Anderson <resistor@mac.com>
Sun, 4 Oct 2009 17:47:39 +0000 (17:47 +0000)
Similarly, it can be marked setPreservesAll, since it does no work in its runOnFunction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83282 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/SSI.cpp

index e5a1dd1bb73c97e97af9b08b8b269a87f7570314..305f60e7d70647660c5bc39da596cc255a62928f 100644 (file)
@@ -37,9 +37,9 @@ STATISTIC(NumSigmaInserted, "Number of sigma functions inserted");
 STATISTIC(NumPhiInserted, "Number of phi functions inserted");
 
 void SSI::getAnalysisUsage(AnalysisUsage &AU) const {
-  AU.addRequired<DominanceFrontier>();
-  AU.addRequired<DominatorTree>();
-  AU.setPreservesCFG();
+  AU.addRequiredTransitive<DominanceFrontier>();
+  AU.addRequiredTransitive<DominatorTree>();
+  AU.setPreservesAll();
 }
 
 bool SSI::runOnFunction(Function &F) {