Fix r309826: Move intantiation and specialization of OwningScopAnalysisManagerFunctio...
authorPhilip Pfaffe <philip.pfaffe@gmail.com>
Wed, 2 Aug 2017 17:25:45 +0000 (17:25 +0000)
committerPhilip Pfaffe <philip.pfaffe@gmail.com>
Wed, 2 Aug 2017 17:25:45 +0000 (17:25 +0000)
When compiling with clang, explicit instantiation of the
OwningScopAnalysisManagerFunctionProxy needs to happen within the polly
namespace. Same goes with the specialization of its run method.

llvm-svn: 309835

polly/lib/Analysis/ScopPass.cpp

index eb03423..6ad6780 100644 (file)
@@ -41,7 +41,9 @@ void ScopPass::getAnalysisUsage(AnalysisUsage &AU) const {
   AU.setPreservesAll();
 }
 
+namespace polly {
 template class OwningInnerAnalysisManagerProxy<ScopAnalysisManager, Function>;
+}
 
 namespace llvm {
 
@@ -132,15 +134,18 @@ bool ScopAnalysisManagerFunctionProxy::Result::invalidate(
 }
 
 template <>
-OwningScopAnalysisManagerFunctionProxy::Result
-OwningScopAnalysisManagerFunctionProxy::run(Function &F,
-                                            FunctionAnalysisManager &FAM) {
-  return Result(InnerAM, FAM.getResult<ScopInfoAnalysis>(F));
-}
-template <>
 ScopAnalysisManagerFunctionProxy::Result
 ScopAnalysisManagerFunctionProxy::run(Function &F,
                                       FunctionAnalysisManager &FAM) {
   return Result(*InnerAM, FAM.getResult<ScopInfoAnalysis>(F));
 }
 } // namespace llvm
+
+namespace polly {
+template <>
+OwningScopAnalysisManagerFunctionProxy::Result
+OwningScopAnalysisManagerFunctionProxy::run(Function &F,
+                                            FunctionAnalysisManager &FAM) {
+  return Result(InnerAM, FAM.getResult<ScopInfoAnalysis>(F));
+}
+}