diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2014-07-11 15:06:24 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2014-07-11 15:06:24 +0000 |
commit | a3953a1c0a76bd59928273a8bb9493b7c085ab87 (patch) | |
tree | c89b5a02a8b6e05897e9a623ebeccfcb1371c06c | |
parent | 4257081b98be7745de8280b20d36e5703f53865f (diff) | |
download | clang-a3953a1c0a76bd59928273a8bb9493b7c085ab87.tar.gz |
Instantiate llvm::Registry<clang::PluginASTAction> 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
-rw-r--r-- | examples/PrintFunctionNames/PrintFunctionNames.exports | 1 | ||||
-rw-r--r-- | include/clang/Frontend/FrontendPluginRegistry.h | 3 | ||||
-rw-r--r-- | lib/Frontend/FrontendAction.cpp | 2 |
3 files changed, 5 insertions, 1 deletions
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<clang::PluginASTAction>; + 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 <system_error> using namespace clang; +template class llvm::Registry<clang::PluginASTAction>; + namespace { class DelegatingDeserializationListener : public ASTDeserializationListener { |