From 03b6d4e04c72c49b01cb2eb5102675421eadbc4c Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov Date: Fri, 20 Aug 2010 11:24:44 +0000 Subject: llvmc: Cut global namespace pollution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111619 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CompilerDriver/BuiltinOptions.h | 4 ++++ lib/CompilerDriver/BuiltinOptions.cpp | 4 +++- tools/llvmc/examples/mcc16/Hooks.cpp | 17 ++++++++++------- utils/TableGen/LLVMCConfigurationEmitter.cpp | 9 +++++++-- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/include/llvm/CompilerDriver/BuiltinOptions.h b/include/llvm/CompilerDriver/BuiltinOptions.h index 0c1bbe2582..7b9c15c52f 100644 --- a/include/llvm/CompilerDriver/BuiltinOptions.h +++ b/include/llvm/CompilerDriver/BuiltinOptions.h @@ -18,6 +18,8 @@ #include +namespace llvmc { + namespace SaveTempsEnum { enum Values { Cwd, Obj, Unset }; } extern llvm::cl::list InputFilenames; @@ -32,4 +34,6 @@ extern llvm::cl::opt ViewGraph; extern llvm::cl::opt WriteGraph; extern llvm::cl::opt SaveTemps; +} // End namespace llvmc. + #endif // LLVM_INCLUDE_COMPILER_DRIVER_BUILTIN_OPTIONS_H diff --git a/lib/CompilerDriver/BuiltinOptions.cpp b/lib/CompilerDriver/BuiltinOptions.cpp index d1ac8c9832..38442038d7 100644 --- a/lib/CompilerDriver/BuiltinOptions.cpp +++ b/lib/CompilerDriver/BuiltinOptions.cpp @@ -19,7 +19,7 @@ namespace cl = llvm::cl; -// External linkage here is intentional. +namespace llvmc { cl::list InputFilenames(cl::Positional, cl::desc(""), cl::ZeroOrMore); @@ -57,3 +57,5 @@ cl::opt SaveTemps clEnumValN(SaveTempsEnum::Obj, "", "Same as 'cwd'"), clEnumValEnd), cl::ValueOptional); + +} // End namespace llvmc. diff --git a/tools/llvmc/examples/mcc16/Hooks.cpp b/tools/llvmc/examples/mcc16/Hooks.cpp index aa31c89c8f..dea97e3ae4 100644 --- a/tools/llvmc/examples/mcc16/Hooks.cpp +++ b/tools/llvmc/examples/mcc16/Hooks.cpp @@ -4,13 +4,16 @@ #include -using namespace llvm; - namespace llvmc { extern char *ProgramName; + + namespace autogenerated { + extern llvm::cl::opt AutoGeneratedParameter_p; + } } -extern cl::opt AutoGeneratedParameter_p; +using namespace llvm; +using namespace llvmc; // Returns the platform specific directory separator via #ifdefs. // FIXME: This currently work on linux and windows only. It does not @@ -29,10 +32,10 @@ namespace hooks { std::string GetLowerCasePartDefine(void) { std::string Partname; - if (AutoGeneratedParameter_p.empty()) { + if (autogenerated::AutoGeneratedParameter_p.empty()) { Partname = "16f1xxx"; } else { - Partname = AutoGeneratedParameter_p; + Partname = autogenerated::AutoGeneratedParameter_p; } std::string LowerCase; @@ -46,10 +49,10 @@ GetLowerCasePartDefine(void) { std::string GetUpperCasePartDefine(void) { std::string Partname; - if (AutoGeneratedParameter_p.empty()) { + if (autogenerated::AutoGeneratedParameter_p.empty()) { Partname = "16f1xxx"; } else { - Partname = AutoGeneratedParameter_p; + Partname = autogenerated::AutoGeneratedParameter_p; } std::string UpperCase; diff --git a/utils/TableGen/LLVMCConfigurationEmitter.cpp b/utils/TableGen/LLVMCConfigurationEmitter.cpp index b091419f91..48c7cc375f 100644 --- a/utils/TableGen/LLVMCConfigurationEmitter.cpp +++ b/utils/TableGen/LLVMCConfigurationEmitter.cpp @@ -2909,7 +2909,6 @@ void EmitHookDeclarations(const ToolDescriptions& ToolDescs, if (HookNames.empty()) return; - O << "namespace hooks {\n"; for (HookInfoMap::const_iterator B = HookNames.begin(), E = HookNames.end(); B != E; ++B) { const char* HookName = B->first(); @@ -2928,7 +2927,6 @@ void EmitHookDeclarations(const ToolDescriptions& ToolDescs, O <<");\n"; } - O << "}\n\n"; } /// EmitIncludes - Emit necessary #include directives and some @@ -3013,12 +3011,19 @@ void EmitPluginCode(const PluginData& Data, raw_ostream& O) { EmitIncludes(O); // Emit global option registration code. + O << "namespace llvmc {\n" + << "namespace autogenerated {\n\n"; EmitOptionDefinitions(Data.OptDescs, Data.HasSink, O); + O << "} // End namespace autogenerated.\n" + << "} // End namespace llvmc.\n\n"; // Emit hook declarations. + O << "namespace hooks {\n"; EmitHookDeclarations(Data.ToolDescs, Data.OptDescs, O); + O << "} // End namespace hooks.\n\n"; O << "namespace {\n\n"; + O << "using namespace llvmc::autogenerated;\n\n"; // Emit Tool classes. for (ToolDescriptions::const_iterator B = Data.ToolDescs.begin(), -- cgit v1.2.3