Add a workaround for building with Clang.
authorMikhail Glushenkov <foldr@codedgers.com>
Fri, 13 Aug 2010 06:02:45 +0000 (06:02 +0000)
committerMikhail Glushenkov <foldr@codedgers.com>
Fri, 13 Aug 2010 06:02:45 +0000 (06:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111007 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/LLVMCConfigurationEmitter.cpp
utils/TableGen/TableGen.cpp

index 7a68d696f9213283ba88c45ccf9b6e233f2badbd..97dca8c6aa3b0613827f26a429a714e9169a5172 100644 (file)
@@ -17,6 +17,8 @@
 #include "llvm/ADT/IntrusiveRefCntPtr.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringSet.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/System/Path.h"
 
 #include <algorithm>
 #include <cassert>
@@ -27,6 +29,8 @@
 
 using namespace llvm;
 
+extern cl::opt<std::string> InputFilename;
+
 namespace {
 
 //===----------------------------------------------------------------------===//
@@ -2974,9 +2978,18 @@ void EmitHookDeclarations(const ToolDescriptions& ToolDescs,
   O << "}\n\n";
 }
 
+std::string GetPluginName() {
+  if (!InputFilename.empty()) {
+    return sys::Path(InputFilename).getBasename();
+  }
+
+  return "";
+}
+
 /// EmitRegisterPlugin - Emit code to register this plugin.
 void EmitRegisterPlugin(int Priority, raw_ostream& O) {
-  O << "struct Plugin : public llvmc::BasePlugin {\n\n";
+  O << "struct Plugin" << GetPluginName()
+    << " : public llvmc::BasePlugin {\n\n";
   O.indent(Indent1) << "int Priority() const { return "
                     << Priority << "; }\n\n";
   O.indent(Indent1) << "int PreprocessOptions() const\n";
@@ -2987,7 +3000,8 @@ void EmitRegisterPlugin(int Priority, raw_ostream& O) {
     << "int PopulateCompilationGraph(CompilationGraph& graph) const\n";
   O.indent(Indent1) << "{ return PopulateCompilationGraphLocal(graph); }\n"
                     << "};\n\n"
-                    << "static llvmc::RegisterPlugin<Plugin> RP;\n\n";
+                    << "static llvmc::RegisterPlugin<Plugin"
+                    << GetPluginName()<< "> RP;\n\n";
 }
 
 /// EmitIncludes - Emit necessary #include directives and some
index ebd163d265c403474bb425a8c7e8b2d8c08586d6..cc784103e36add7384f7019baf34c4a0962760ae 100644 (file)
@@ -146,9 +146,6 @@ namespace {
   OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"),
                  cl::init("-"));
 
-  cl::opt<std::string>
-  InputFilename(cl::Positional, cl::desc("<input file>"), cl::init("-"));
-
   cl::list<std::string>
   IncludeDirs("I", cl::desc("Directory of include files"),
               cl::value_desc("directory"), cl::Prefix);
@@ -161,6 +158,9 @@ namespace {
 
 
 // FIXME: Eliminate globals from tblgen.
+cl::opt<std::string>
+InputFilename(cl::Positional, cl::desc("<input file>"), cl::init("-"));
+
 RecordKeeper llvm::Records;
 
 static SourceMgr SrcMgr;