]> granicus.if.org Git - llvm/commit
Revert r293017 and fix the actual underlying issue.
authorChandler Carruth <chandlerc@gmail.com>
Tue, 7 Feb 2017 01:50:48 +0000 (01:50 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 7 Feb 2017 01:50:48 +0000 (01:50 +0000)
commitd53dbed1b05af1a70a76288501ac01744be4662c
treeae2dc3c326d3e45e82d006ccbd4ba759dee02cae
parentd14a49a05f1100b06c1f25213ac366ee0578c7ca
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. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294267 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/CGSCCPassManager.h
include/llvm/Analysis/LoopAnalysisManager.h
include/llvm/IR/PassManager.h
lib/Analysis/CGSCCPassManager.cpp
lib/Analysis/LoopAnalysisManager.cpp