diff options
Diffstat (limited to 'lib/Transforms/Scalar')
-rw-r--r-- | lib/Transforms/Scalar/ConstantProp.cpp | 6 | ||||
-rw-r--r-- | lib/Transforms/Scalar/DecomposeMultiDimRefs.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/Scalar/GCSE.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Scalar/IndVarSimplify.cpp | 1 | ||||
-rw-r--r-- | lib/Transforms/Scalar/InstructionCombining.cpp | 6 | ||||
-rw-r--r-- | lib/Transforms/Scalar/SCCP.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/Scalar/SymbolStripping.cpp | 3 |
7 files changed, 23 insertions, 3 deletions
diff --git a/lib/Transforms/Scalar/ConstantProp.cpp b/lib/Transforms/Scalar/ConstantProp.cpp index 0f1d0aea32..a8dbe3ff95 100644 --- a/lib/Transforms/Scalar/ConstantProp.cpp +++ b/lib/Transforms/Scalar/ConstantProp.cpp @@ -219,6 +219,12 @@ namespace { return Modified; } + + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + // FIXME: This pass does not preserve the CFG because it folds terminator + // instructions! + //AU.preservesCFG(); + } }; } diff --git a/lib/Transforms/Scalar/DecomposeMultiDimRefs.cpp b/lib/Transforms/Scalar/DecomposeMultiDimRefs.cpp index 78dcfd50dd..f901a29015 100644 --- a/lib/Transforms/Scalar/DecomposeMultiDimRefs.cpp +++ b/lib/Transforms/Scalar/DecomposeMultiDimRefs.cpp @@ -175,6 +175,10 @@ namespace { virtual bool runOnFunction(Function *F) { return doDecomposeMultiDimRefs(F); } + + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.preservesCFG(); + } }; } diff --git a/lib/Transforms/Scalar/GCSE.cpp b/lib/Transforms/Scalar/GCSE.cpp index 8bdbad522b..b864760e68 100644 --- a/lib/Transforms/Scalar/GCSE.cpp +++ b/lib/Transforms/Scalar/GCSE.cpp @@ -51,7 +51,7 @@ namespace { // This transformation requires dominator and immediate dominator info virtual void getAnalysisUsage(AnalysisUsage &AU) const { - //preservesCFG(AU); + AU.preservesCFG(); AU.addRequired(DominatorSet::ID); AU.addRequired(ImmediateDominators::ID); } diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp index a115e050d1..003419bb84 100644 --- a/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -203,6 +203,7 @@ namespace { virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired(LoopInfo::ID); + AU.preservesCFG(); } }; } diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index dea024442d..626c130114 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -42,10 +42,12 @@ namespace { } public: - - virtual bool runOnFunction(Function *F); + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.preservesCFG(); + } + // Visitation implementation - Implement instruction combining for different // instruction types. The semantics are as follows: // Return Value: diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index c68004d245..12d518b3c8 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -470,6 +470,10 @@ namespace { SCCP S(F); return S.doSCCP(); } + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + // FIXME: SCCP does not preserve the CFG because it folds terminators! + //AU.preservesCFG(); + } }; } diff --git a/lib/Transforms/Scalar/SymbolStripping.cpp b/lib/Transforms/Scalar/SymbolStripping.cpp index 36b465ebb6..f99684faaf 100644 --- a/lib/Transforms/Scalar/SymbolStripping.cpp +++ b/lib/Transforms/Scalar/SymbolStripping.cpp @@ -64,6 +64,9 @@ namespace { virtual bool runOnFunction(Function *F) { return doSymbolStripping(F); } + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + } }; struct FullSymbolStripping : public SymbolStripping { |