summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2014-07-11 15:06:24 +0000
committerNAKAMURA Takumi <geek4civic@gmail.com>2014-07-11 15:06:24 +0000
commita3953a1c0a76bd59928273a8bb9493b7c085ab87 (patch)
treec89b5a02a8b6e05897e9a623ebeccfcb1371c06c
parent4257081b98be7745de8280b20d36e5703f53865f (diff)
downloadclang-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.exports1
-rw-r--r--include/clang/Frontend/FrontendPluginRegistry.h3
-rw-r--r--lib/Frontend/FrontendAction.cpp2
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 {