diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp b/llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp index 21c6c32e8e02..fddf28c281fc 100644 --- a/llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp +++ b/llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp @@ -13,7 +13,9 @@ #include "llvm/Transforms/Scalar/LowerConstantIntrinsics.h" #include "llvm/ADT/PostOrderIterator.h" +#include "llvm/ADT/SetVector.h" #include "llvm/ADT/Statistic.h" +#include "llvm/Analysis/GlobalsModRef.h" #include "llvm/Analysis/InstructionSimplify.h" #include "llvm/Analysis/MemoryBuiltins.h" #include "llvm/Analysis/TargetLibraryInfo.h" @@ -135,8 +137,12 @@ static bool lowerConstantIntrinsics(Function &F, const TargetLibraryInfo *TLI) { PreservedAnalyses LowerConstantIntrinsicsPass::run(Function &F, FunctionAnalysisManager &AM) { - if (lowerConstantIntrinsics(F, AM.getCachedResult<TargetLibraryAnalysis>(F))) - return PreservedAnalyses::none(); + if (lowerConstantIntrinsics(F, + AM.getCachedResult<TargetLibraryAnalysis>(F))) { + PreservedAnalyses PA; + PA.preserve<GlobalsAA>(); + return PA; + } return PreservedAnalyses::all(); } @@ -145,7 +151,7 @@ namespace { /// Legacy pass for lowering is.constant intrinsics out of the IR. /// /// When this pass is run over a function it converts is.constant intrinsics -/// into 'true' or 'false'. This is completements the normal constand folding +/// into 'true' or 'false'. This complements the normal constant folding /// to 'true' as part of Instruction Simplify passes. class LowerConstantIntrinsics : public FunctionPass { public: @@ -159,6 +165,10 @@ public: const TargetLibraryInfo *TLI = TLIP ? &TLIP->getTLI(F) : nullptr; return lowerConstantIntrinsics(F, TLI); } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.addPreserved<GlobalsAAWrapperPass>(); + } }; } // namespace |