summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2016-11-08 19:18:20 +0000
committerDavide Italiano <davide@freebsd.org>2016-11-08 19:18:20 +0000
commit1e77aaca8a9127f417d1f3e8694db1ebe4bf6440 (patch)
tree2a19f35c8ad8ff2d61765d65ea2e088380b54e48 /llvm/lib/Transforms/Utils
parentfbc7b7d15410b4eaa43d1ad328a760f065829b78 (diff)
downloadbcm5719-llvm-1e77aaca8a9127f417d1f3e8694db1ebe4bf6440.tar.gz
bcm5719-llvm-1e77aaca8a9127f417d1f3e8694db1ebe4bf6440.zip
[LibcallsShrinkWrap] This pass doesn't preserve the CFG.
For example, it invalidates the domtree, causing assertions in later passes which need dominator infos. Make it preserve GlobalsAA, as suggested by Eli. Differential Revision: https://reviews.llvm.org/D26381 llvm-svn: 286271
Diffstat (limited to 'llvm/lib/Transforms/Utils')
-rw-r--r--llvm/lib/Transforms/Utils/LibCallsShrinkWrap.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/LibCallsShrinkWrap.cpp b/llvm/lib/Transforms/Utils/LibCallsShrinkWrap.cpp
index c9924984bb5..b59ddcffeff 100644
--- a/llvm/lib/Transforms/Utils/LibCallsShrinkWrap.cpp
+++ b/llvm/lib/Transforms/Utils/LibCallsShrinkWrap.cpp
@@ -29,6 +29,7 @@
#include "llvm/Transforms/Utils/LibCallsShrinkWrap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
+#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Constants.h"
@@ -529,7 +530,7 @@ bool LibCallsShrinkWrap::perform(CallInst *CI) {
}
void LibCallsShrinkWrapLegacyPass::getAnalysisUsage(AnalysisUsage &AU) const {
- AU.setPreservesCFG();
+ AU.addPreserved<GlobalsAAWrapperPass>();
AU.addRequired<TargetLibraryInfoWrapperPass>();
}
@@ -561,6 +562,8 @@ PreservedAnalyses LibCallsShrinkWrapPass::run(Function &F,
bool Changed = runImpl(F, TLI);
if (!Changed)
return PreservedAnalyses::all();
- return PreservedAnalyses::none();
+ auto PA = PreservedAnalyses();
+ PA.preserve<GlobalsAA>();
+ return PA;
}
}
OpenPOWER on IntegriCloud