summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/LoopAnalysisManager.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2017-02-07 01:50:48 +0000
committerChandler Carruth <chandlerc@gmail.com>2017-02-07 01:50:48 +0000
commit346542b769dc71ae8b43f216873b27f69f06fab4 (patch)
tree5ea296dac62a6a954983afa015cfd3e6f86b83a3 /llvm/lib/Analysis/LoopAnalysisManager.cpp
parent3584515018dae90848bc6d4edb156bc893b28083 (diff)
downloadbcm5719-llvm-346542b769dc71ae8b43f216873b27f69f06fab4.tar.gz
bcm5719-llvm-346542b769dc71ae8b43f216873b27f69f06fab4.zip
Revert r293017 and fix the actual underlying issue.
The patch committed in r293017, as discussed on the list, doesn't really make sense but was causing an actual issue to go away. The issue turns out to be that in one place the extra template arguments were dropped from the OuterAnalysisManagerProxy. This in turn caused the types used in one set of places to access the key to be completely different from the types used in another set of places for both Loop and CGSCC cases where there are extra arguments. I have literally no idea how anything seemed to work with this bug in place. It blows my mind. But it did except for mingw64 in a DLL build. I've added a really handy static assert that helps ensure we don't break this in the future. It immediately diagnoses the issue with a compile failure and a very clear error message. Much better that staring at backtraces on a build bot. =] llvm-svn: 294267
Diffstat (limited to 'llvm/lib/Analysis/LoopAnalysisManager.cpp')
-rw-r--r--llvm/lib/Analysis/LoopAnalysisManager.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/LoopAnalysisManager.cpp b/llvm/lib/Analysis/LoopAnalysisManager.cpp
index 6ca9c273771..e4a0f90b2f7 100644
--- a/llvm/lib/Analysis/LoopAnalysisManager.cpp
+++ b/llvm/lib/Analysis/LoopAnalysisManager.cpp
@@ -23,7 +23,8 @@ namespace llvm {
template class AllAnalysesOn<Loop>;
template class AnalysisManager<Loop, LoopStandardAnalysisResults &>;
template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;
-template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;
+template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,
+ LoopStandardAnalysisResults &>;
bool LoopAnalysisManagerFunctionProxy::Result::invalidate(
Function &F, const PreservedAnalyses &PA,
OpenPOWER on IntegriCloud