From a3953a1c0a76bd59928273a8bb9493b7c085ab87 Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Fri, 11 Jul 2014 15:06:24 +0000 Subject: [PATCH] Instantiate llvm::Registry in FrontendAction.cpp. - Plugins don't need to export _ZN4llvm8Registry*. - Win32.DLL cannot merge common symbols among DLLs. Static members in llvm::Registry should be instantiated in a parent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212821 91177308-0d34-0410-b5e6-96231b3b80d8 --- examples/PrintFunctionNames/PrintFunctionNames.exports | 1 - include/clang/Frontend/FrontendPluginRegistry.h | 3 +++ lib/Frontend/FrontendAction.cpp | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/PrintFunctionNames/PrintFunctionNames.exports b/examples/PrintFunctionNames/PrintFunctionNames.exports index 0ff590d30d..e69de29bb2 100644 --- a/examples/PrintFunctionNames/PrintFunctionNames.exports +++ b/examples/PrintFunctionNames/PrintFunctionNames.exports @@ -1 +0,0 @@ -_ZN4llvm8Registry* diff --git a/include/clang/Frontend/FrontendPluginRegistry.h b/include/clang/Frontend/FrontendPluginRegistry.h index ec925adb01..49be495daa 100644 --- a/include/clang/Frontend/FrontendPluginRegistry.h +++ b/include/clang/Frontend/FrontendPluginRegistry.h @@ -13,6 +13,9 @@ #include "clang/Frontend/FrontendAction.h" #include "llvm/Support/Registry.h" +// Instantiated in FrontendAction.cpp. +extern template class llvm::Registry; + namespace clang { /// The frontend plugin registry. diff --git a/lib/Frontend/FrontendAction.cpp b/lib/Frontend/FrontendAction.cpp index c274ba7176..791017924d 100644 --- a/lib/Frontend/FrontendAction.cpp +++ b/lib/Frontend/FrontendAction.cpp @@ -32,6 +32,8 @@ #include using namespace clang; +template class llvm::Registry; + namespace { class DelegatingDeserializationListener : public ASTDeserializationListener { -- 2.40.0