From 6b834bb9ba811be6a7ec65d4f746f1241636a4fd Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Wed, 11 Jan 2017 09:20:24 +0000 Subject: [PATCH] [PM] Take more drastic measures to work around MSVC's failure on this code. If this doesn't work and I can't find someone to help who has MSVC installed, I'll back everything out I guess. =[ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291661 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/Analysis/LoopPassManagerTest.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/unittests/Analysis/LoopPassManagerTest.cpp b/unittests/Analysis/LoopPassManagerTest.cpp index 6288dc993e4..169af03e9db 100644 --- a/unittests/Analysis/LoopPassManagerTest.cpp +++ b/unittests/Analysis/LoopPassManagerTest.cpp @@ -75,6 +75,15 @@ public: } protected: + // FIXME: MSVC seems unable to handle a lambda argument to Invoke from within + // the template, so we use a boring static function. + static bool invalidateCallback(IRUnitT &IR, const PreservedAnalyses &PA, + typename AnalysisManagerT::Invalidator &Inv) { + auto PAC = PA.template getChecker(); + return !PAC.preserved() && + !PAC.template preservedSet>(); + } + /// Derived classes should call this in their constructor to set up default /// mock actions. (We can't do this in our constructor because this has to /// run after the DerivedT is constructed.) @@ -82,14 +91,8 @@ protected: ON_CALL(static_cast(*this), run(_, _, testing::Matcher(_)...)) .WillByDefault(Return(this->getResult())); - auto InvalidateLambda = [](IRUnitT &IR, const PreservedAnalyses &PA, - typename AnalysisManagerT::Invalidator &Inv) { - auto PAC = PA.template getChecker(); - return !PAC.preserved() && - !PAC.template preservedSet>(); - }; ON_CALL(static_cast(*this), invalidate(_, _, _)) - .WillByDefault(Invoke(InvalidateLambda)); + .WillByDefault(Invoke(&invalidateCallback)); } }; -- 2.50.1