diff --git a/tools/bugpoint/bugpoint.cpp b/tools/bugpoint/bugpoint.cpp index 57d8e60b1f7..0cdbfd45adb 100644 --- a/tools/bugpoint/bugpoint.cpp +++ b/tools/bugpoint/bugpoint.cpp @@ -18,6 +18,7 @@ #include "llvm/LinkAllPasses.h" #include "llvm/Support/PassNameParser.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/PluginLoader.h" #include "llvm/System/Process.h" #include "llvm/System/Signals.h" @@ -59,6 +60,7 @@ static void BugpointInterruptFunction() { } int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. cl::ParseCommandLineOptions(argc, argv, " LLVM automatic testcase reducer. See\nhttp://" "llvm.org/docs/CommandGuide/bugpoint.html" diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp index eda7d9b5b56..a898d4cd776 100644 --- a/tools/gccas/gccas.cpp +++ b/tools/gccas/gccas.cpp @@ -24,6 +24,7 @@ #include "llvm/Transforms/Scalar.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Streams.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include #include @@ -133,6 +134,7 @@ void AddConfiguredTransformationPasses(PassManager &PM) { int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm .s -> .o assembler for GCC\n"); diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index 0327a3cc115..46ffac11229 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -30,6 +30,7 @@ #include "llvm/Transforms/Scalar.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/System/Signals.h" #include "llvm/Support/SystemUtils.h" @@ -214,6 +215,7 @@ static void BuildLinkItems( } int main(int argc, char **argv, char **envp ) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. cl::ParseCommandLineOptions(argc, argv, " llvm linker for GCC\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index cd047924e1e..fd7afa9d1f9 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -24,6 +24,7 @@ #include "llvm/PassManager.h" #include "llvm/Pass.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/PluginLoader.h" #include "llvm/Support/FileUtilities.h" #include "llvm/Analysis/Verifier.h" @@ -168,6 +169,7 @@ static std::ostream *GetOutputStream(const char *ProgName) { // main - Entry point for the llc compiler. // int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm system compiler\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp index a9d905968f9..cce47fb7a2e 100644 --- a/tools/lli/lli.cpp +++ b/tools/lli/lli.cpp @@ -22,6 +22,7 @@ #include "llvm/ExecutionEngine/Interpreter.h" #include "llvm/ExecutionEngine/GenericValue.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/PluginLoader.h" #include "llvm/System/Process.h" #include "llvm/System/Signals.h" @@ -56,6 +57,7 @@ namespace { // main Driver function // int main(int argc, char **argv, char * const *envp) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm interpreter & dynamic compiler\n"); diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index 1e8bcec463a..b9278ad6a31 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -16,12 +16,12 @@ #include "llvm/Bytecode/Archive.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Compressor.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include #include #include #include - using namespace llvm; // Option for compatibility with ASIX, not used but must allow it to be present. @@ -696,6 +696,7 @@ doReplaceOrInsert(std::string* ErrMsg) { // main - main program for llvm-ar .. see comments in the code int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. // Have the command line options parsed and handle things // like --help and --version. diff --git a/tools/llvm-as/llvm-as.cpp b/tools/llvm-as/llvm-as.cpp index d8f487ee9df..c1c0a0c4a93 100644 --- a/tools/llvm-as/llvm-as.cpp +++ b/tools/llvm-as/llvm-as.cpp @@ -20,6 +20,7 @@ #include "llvm/Bytecode/Writer.h" #include "llvm/Analysis/Verifier.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/Support/SystemUtils.h" #include "llvm/System/Signals.h" @@ -50,6 +51,7 @@ DisableVerify("disable-verify", cl::Hidden, cl::desc("Do not run verifier on input LLVM (dangerous!)")); int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. cl::ParseCommandLineOptions(argc, argv, " llvm .ll -> .bc assembler\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp b/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp index 01fa5130abd..bba9c7163a8 100644 --- a/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp +++ b/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp @@ -32,6 +32,7 @@ #include "llvm/Analysis/Verifier.h" #include "llvm/Bytecode/Analyzer.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include #include @@ -48,8 +49,8 @@ static cl::opt NoDetails ("nodetails", cl::desc("Skip detailed output")); static cl::opt Dump ("dump", cl::desc("Dump low level bytecode trace")); static cl::opt Verify ("verify", cl::desc("Progressively verify module")); -int -main(int argc, char **argv) { +int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm-bcanalyzer Analysis of ByteCode Dumper\n"); diff --git a/tools/llvm-db/llvm-db.cpp b/tools/llvm-db/llvm-db.cpp index 2680d8c4233..57994bfe316 100644 --- a/tools/llvm-db/llvm-db.cpp +++ b/tools/llvm-db/llvm-db.cpp @@ -14,9 +14,9 @@ #include "CLIDebugger.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include - using namespace llvm; namespace { @@ -49,6 +49,7 @@ namespace { // main Driver function // int main(int argc, char **argv, char * const *envp) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. std::cout << "NOTE: llvm-db is known useless right now.\n"; try { cl::ParseCommandLineOptions(argc, argv, diff --git a/tools/llvm-dis/llvm-dis.cpp b/tools/llvm-dis/llvm-dis.cpp index 8c2b3fe2e78..8d9e9aace07 100644 --- a/tools/llvm-dis/llvm-dis.cpp +++ b/tools/llvm-dis/llvm-dis.cpp @@ -21,6 +21,7 @@ #include "llvm/Bytecode/Reader.h" #include "llvm/Assembly/PrintModulePass.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/System/Signals.h" #include @@ -39,6 +40,7 @@ static cl::opt Force("f", cl::desc("Overwrite output files")); int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm .bc -> .ll disassembler\n"); sys::PrintStackTraceOnErrorSignal(); @@ -115,6 +117,7 @@ int main(int argc, char **argv) { } catch (...) { llvm_cerr << argv[0] << ": Unexpected unknown exception occurred.\n"; } + return 1; } diff --git a/tools/llvm-extract/llvm-extract.cpp b/tools/llvm-extract/llvm-extract.cpp index 4f3236f802b..a6edc721c94 100644 --- a/tools/llvm-extract/llvm-extract.cpp +++ b/tools/llvm-extract/llvm-extract.cpp @@ -19,6 +19,7 @@ #include "llvm/Transforms/IPO.h" #include "llvm/Target/TargetData.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/System/Signals.h" #include @@ -47,6 +48,7 @@ ExtractFunc("func", cl::desc("Specify function to extract"), cl::init("main"), cl::value_desc("function")); int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm extractor\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvm-ld/llvm-ld.cpp b/tools/llvm-ld/llvm-ld.cpp index fe825f9fed6..20ea4636339 100644 --- a/tools/llvm-ld/llvm-ld.cpp +++ b/tools/llvm-ld/llvm-ld.cpp @@ -32,6 +32,7 @@ #include "llvm/Target/TargetMachineRegistry.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/Support/SystemUtils.h" #include "llvm/System/Signals.h" @@ -433,6 +434,7 @@ extern void Optimize(Module*); } int main(int argc, char **argv, char **envp) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { // Initial global variable above for convenience printing of program name. progname = sys::Path(argv[0]).getBasename(); diff --git a/tools/llvm-link/llvm-link.cpp b/tools/llvm-link/llvm-link.cpp index 4214a4a2609..35fce1e1c5f 100644 --- a/tools/llvm-link/llvm-link.cpp +++ b/tools/llvm-link/llvm-link.cpp @@ -18,6 +18,7 @@ #include "llvm/Bytecode/Reader.h" #include "llvm/Bytecode/Writer.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/System/Signals.h" #include "llvm/System/Path.h" @@ -75,6 +76,7 @@ static inline std::auto_ptr LoadFile(const std::string &FN) { } int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm linker\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index 3e439537962..422cdda874f 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -20,6 +20,7 @@ #include "llvm/Bytecode/Reader.h" #include "llvm/Bytecode/Archive.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include #include @@ -65,18 +66,18 @@ namespace { std::string ToolName; } -char TypeCharForSymbol (GlobalValue &GV) { - if (GV.isExternal ()) return 'U'; - if (GV.hasLinkOnceLinkage ()) return 'C'; - if (GV.hasWeakLinkage ()) return 'W'; - if (isa (GV) && GV.hasInternalLinkage ()) return 't'; - if (isa (GV)) return 'T'; - if (isa (GV) && GV.hasInternalLinkage ()) return 'd'; - if (isa (GV)) return 'D'; +static char TypeCharForSymbol(GlobalValue &GV) { + if (GV.isExternal()) return 'U'; + if (GV.hasLinkOnceLinkage()) return 'C'; + if (GV.hasWeakLinkage()) return 'W'; + if (isa(GV) && GV.hasInternalLinkage()) return 't'; + if (isa(GV)) return 'T'; + if (isa(GV) && GV.hasInternalLinkage()) return 'd'; + if (isa(GV)) return 'D'; return '?'; } -void DumpSymbolNameForGlobalValue (GlobalValue &GV) { +static void DumpSymbolNameForGlobalValue(GlobalValue &GV) { const std::string SymbolAddrStr = " "; // Not used yet... char TypeChar = TypeCharForSymbol (GV); if ((TypeChar != 'U') && UndefinedOnly) @@ -101,7 +102,7 @@ void DumpSymbolNameForGlobalValue (GlobalValue &GV) { } } -void DumpSymbolNamesFromModule (Module *M) { +static void DumpSymbolNamesFromModule(Module *M) { const std::string &Filename = M->getModuleIdentifier (); if (OutputFormat == posix && MultipleFiles) { std::cout << Filename << ":\n"; @@ -116,7 +117,7 @@ void DumpSymbolNamesFromModule (Module *M) { std::for_each (M->global_begin (), M->global_end (), DumpSymbolNameForGlobalValue); } -void DumpSymbolNamesFromFile (std::string &Filename) { +static void DumpSymbolNamesFromFile(std::string &Filename) { std::string ErrorMessage; sys::Path aPath(Filename); if (Filename != "-") { @@ -135,16 +136,16 @@ void DumpSymbolNamesFromFile (std::string &Filename) { } } else if (aPath.isArchive()) { std::string ErrMsg; - Archive* archive = Archive::OpenAndLoad(sys::Path(Filename),&ErrorMessage); + Archive* archive = Archive::OpenAndLoad(sys::Path(Filename), &ErrorMessage); if (!archive) std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n"; std::vector Modules; - if (archive->getAllModules(Modules,&ErrorMessage)) { + if (archive->getAllModules(Modules, &ErrorMessage)) { std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n"; return; } MultipleFiles = true; - std::for_each (Modules.begin (), Modules.end (), DumpSymbolNamesFromModule); + std::for_each (Modules.begin(), Modules.end(), DumpSymbolNamesFromModule); } else { std::cerr << ToolName << ": " << Filename << ": " << "unrecognizable file type\n"; @@ -153,6 +154,7 @@ void DumpSymbolNamesFromFile (std::string &Filename) { } int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm symbol table dumper\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvm-prof/llvm-prof.cpp b/tools/llvm-prof/llvm-prof.cpp index 0b645f6b971..44bc6c5d864 100644 --- a/tools/llvm-prof/llvm-prof.cpp +++ b/tools/llvm-prof/llvm-prof.cpp @@ -19,6 +19,7 @@ #include "llvm/Analysis/ProfileInfoLoader.h" #include "llvm/Bytecode/Reader.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include #include @@ -107,6 +108,7 @@ namespace { int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm profile dump decoder\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvm-ranlib/llvm-ranlib.cpp b/tools/llvm-ranlib/llvm-ranlib.cpp index f499754ced3..ef1704a78da 100644 --- a/tools/llvm-ranlib/llvm-ranlib.cpp +++ b/tools/llvm-ranlib/llvm-ranlib.cpp @@ -14,6 +14,7 @@ #include "llvm/Module.h" #include "llvm/Bytecode/Archive.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/System/Signals.h" #include #include @@ -41,6 +42,7 @@ void printSymbolTable(Archive* TheArchive) { } int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. // Have the command line options parsed and handle things // like --help and --version. diff --git a/tools/llvm-upgrade/llvm-upgrade.cpp b/tools/llvm-upgrade/llvm-upgrade.cpp index 1046736c15a..d39aa92d12c 100644 --- a/tools/llvm-upgrade/llvm-upgrade.cpp +++ b/tools/llvm-upgrade/llvm-upgrade.cpp @@ -21,6 +21,7 @@ #include "ParserInternals.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Streams.h" #include "llvm/Support/SystemUtils.h" #include "llvm/System/Signals.h" @@ -44,6 +45,7 @@ Debug("debug", cl::desc("Print debug output from yacc parser"),cl::Hidden, cl::init(false)); int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. cl::ParseCommandLineOptions(argc, argv, " llvm .ll -> .bc assembler\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvm2cpp/CppWriter.cpp b/tools/llvm2cpp/CppWriter.cpp index b1f717d0bf5..ef07d46137c 100644 --- a/tools/llvm2cpp/CppWriter.cpp +++ b/tools/llvm2cpp/CppWriter.cpp @@ -20,11 +20,12 @@ #include "llvm/Instructions.h" #include "llvm/Module.h" #include "llvm/SymbolTable.h" -#include "llvm/Support/CFG.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/STLExtras.h" -#include "llvm/Support/MathExtras.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/CFG.h" +#include "llvm/Support/ManagedStatic.h" +#include "llvm/Support/MathExtras.h" #include "llvm/Config/config.h" #include #include diff --git a/tools/llvm2cpp/llvm2cpp.cpp b/tools/llvm2cpp/llvm2cpp.cpp index 8d3653ae223..01c8fbd0a51 100644 --- a/tools/llvm2cpp/llvm2cpp.cpp +++ b/tools/llvm2cpp/llvm2cpp.cpp @@ -20,6 +20,7 @@ #include "llvm/Bytecode/Reader.h" #include "llvm/Analysis/Verifier.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/SystemUtils.h" #include "llvm/System/Signals.h" #include "CppWriter.h" @@ -41,6 +42,7 @@ static cl::opt Force("f", cl::desc("Overwrite output files")); int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. cl::ParseCommandLineOptions(argc, argv, " llvm .ll -> .cpp assembler\n"); sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/llvmc/llvmc.cpp b/tools/llvmc/llvmc.cpp index 3b22149db3c..081ae453ec0 100644 --- a/tools/llvmc/llvmc.cpp +++ b/tools/llvmc/llvmc.cpp @@ -17,17 +17,16 @@ #include "CompilerDriver.h" #include "Configuration.h" #include "llvm/Pass.h" -#include "llvm/System/Signals.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" +#include "llvm/System/Signals.h" #include - using namespace llvm; -namespace { //===----------------------------------------------------------------------===// //=== PHASE OPTIONS //===----------------------------------------------------------------------===// -cl::opt FinalPhase(cl::Optional, +static cl::opt FinalPhase(cl::Optional, cl::desc("Choose final phase of compilation:"), cl::init(CompilerDriver::LINKING), cl::values( @@ -46,7 +45,7 @@ cl::opt FinalPhase(cl::Optional, //===----------------------------------------------------------------------===// //=== OPTIMIZATION OPTIONS //===----------------------------------------------------------------------===// -cl::opt OptLevel(cl::ZeroOrMore, +static cl::opt OptLevel(cl::ZeroOrMore, cl::desc("Choose level of optimization to apply:"), cl::init(CompilerDriver::OPT_FAST_COMPILE), cl::values( @@ -70,48 +69,48 @@ cl::opt OptLevel(cl::ZeroOrMore, //=== TOOL OPTIONS //===----------------------------------------------------------------------===// -cl::list PreprocessorToolOpts("Tpre", cl::ZeroOrMore, +static cl::list PreprocessorToolOpts("Tpre", cl::ZeroOrMore, cl::desc("Pass specific options to the pre-processor"), cl::value_desc("option")); -cl::alias PreprocessorToolOptsAlias("Wp,", cl::ZeroOrMore, +static cl::alias PreprocessorToolOptsAlias("Wp,", cl::ZeroOrMore, cl::desc("Alias for -Tpre"), cl::aliasopt(PreprocessorToolOpts)); -cl::list TranslatorToolOpts("Ttrn", cl::ZeroOrMore, +static cl::list TranslatorToolOpts("Ttrn", cl::ZeroOrMore, cl::desc("Pass specific options to the assembler"), cl::value_desc("option")); -cl::list AssemblerToolOpts("Tasm", cl::ZeroOrMore, +static cl::list AssemblerToolOpts("Tasm", cl::ZeroOrMore, cl::desc("Pass specific options to the assembler"), cl::value_desc("option")); -cl::alias AssemblerToolOptsAlias("Wa,", cl::ZeroOrMore, +static cl::alias AssemblerToolOptsAlias("Wa,", cl::ZeroOrMore, cl::desc("Alias for -Tasm"), cl::aliasopt(AssemblerToolOpts)); -cl::list OptimizerToolOpts("Topt", cl::ZeroOrMore, +static cl::list OptimizerToolOpts("Topt", cl::ZeroOrMore, cl::desc("Pass specific options to the optimizer"), cl::value_desc("option")); -cl::list LinkerToolOpts("Tlnk", cl::ZeroOrMore, +static cl::list LinkerToolOpts("Tlnk", cl::ZeroOrMore, cl::desc("Pass specific options to the linker"), cl::value_desc("option")); -cl::alias LinkerToolOptsAlias("Wl,", cl::ZeroOrMore, +static cl::alias LinkerToolOptsAlias("Wl,", cl::ZeroOrMore, cl::desc("Alias for -Tlnk"), cl::aliasopt(LinkerToolOpts)); -cl::list fOpts("f", cl::ZeroOrMore, cl::Prefix, +static cl::list fOpts("f", cl::ZeroOrMore, cl::Prefix, cl::desc("Pass through -f options to compiler tools"), cl::value_desc("option")); -cl::list MOpts("M", cl::ZeroOrMore, cl::Prefix, +static cl::list MOpts("M", cl::ZeroOrMore, cl::Prefix, cl::desc("Pass through -M options to compiler tools"), cl::value_desc("option")); -cl::list WOpts("W", cl::ZeroOrMore, cl::Prefix, +static cl::list WOpts("W", cl::ZeroOrMore, cl::Prefix, cl::desc("Pass through -W options to compiler tools"), cl::value_desc("option")); -cl::list BOpt("B", cl::ZeroOrMore, cl::Prefix, +static cl::list BOpt("B", cl::ZeroOrMore, cl::Prefix, cl::desc("Specify path to find llvmc sub-tools"), cl::value_desc("dir")); @@ -119,17 +118,17 @@ cl::list BOpt("B", cl::ZeroOrMore, cl::Prefix, //=== INPUT OPTIONS //===----------------------------------------------------------------------===// -cl::list LibPaths("L", cl::Prefix, +static cl::list LibPaths("L", cl::Prefix, cl::desc("Specify a library search path"), cl::value_desc("dir")); -cl::list Libraries("l", cl::Prefix, +static cl::list Libraries("l", cl::Prefix, cl::desc("Specify base name of libraries to link to"), cl::value_desc("lib")); -cl::list Includes("I", cl::Prefix, +static cl::list Includes("I", cl::Prefix, cl::desc("Specify location to search for included source"), cl::value_desc("dir")); -cl::list Defines("D", cl::Prefix, +static cl::list Defines("D", cl::Prefix, cl::desc("Specify a pre-processor symbol to define"), cl::value_desc("symbol")); @@ -137,22 +136,22 @@ cl::list Defines("D", cl::Prefix, //=== OUTPUT OPTIONS //===----------------------------------------------------------------------===// -cl::opt OutputFilename("o", +static cl::opt OutputFilename("o", cl::desc("Override output filename"), cl::value_desc("file")); -cl::opt OutputMachine("m", cl::Prefix, +static cl::opt OutputMachine("m", cl::Prefix, cl::desc("Specify a target machine"), cl::value_desc("machine")); -cl::opt Native("native", cl::init(false), +static cl::opt Native("native", cl::init(false), cl::desc("Generative native code instead of bytecode")); -cl::opt DebugOutput("g", cl::init(false), +static cl::opt DebugOutput("g", cl::init(false), cl::desc("Generate objects that include debug symbols")); -cl::opt StripOutput("strip", cl::init(false), +static cl::opt StripOutput("strip", cl::init(false), cl::desc("Strip all symbols from linked output file")); -cl::opt PrintFileName("print-fname", cl::Optional, +static cl::opt PrintFileName("print-fname", cl::Optional, cl::value_desc("file"), cl::desc("Print the full path for the option's value")); @@ -160,28 +159,28 @@ cl::opt PrintFileName("print-fname", cl::Optional, //=== INFORMATION OPTIONS //===----------------------------------------------------------------------===// -cl::opt DryRun("dry-run", cl::Optional, cl::init(false), +static cl::opt DryRun("dry-run", cl::Optional, cl::init(false), cl::desc("Do everything but perform the compilation actions")); -cl::alias DryRunAlias("y", cl::Optional, +static cl::alias DryRunAlias("y", cl::Optional, cl::desc("Alias for -dry-run"), cl::aliasopt(DryRun)); -cl::opt Verbose("verbose", cl::Optional, cl::init(false), +static cl::opt Verbose("verbose", cl::Optional, cl::init(false), cl::desc("Print out each action taken")); -cl::alias VerboseAlias("v", cl::Optional, +static cl::alias VerboseAlias("v", cl::Optional, cl::desc("Alias for -verbose"), cl::aliasopt(Verbose)); -cl::opt Debug("debug", cl::Optional, cl::init(false), +static cl::opt Debug("debug", cl::Optional, cl::init(false), cl::Hidden, cl::desc("Print out debugging information")); -cl::alias DebugAlias("d", cl::Optional, +static cl::alias DebugAlias("d", cl::Optional, cl::desc("Alias for -debug"), cl::aliasopt(Debug)); -cl::opt TimeActions("time-actions", cl::Optional, cl::init(false), +static cl::opt TimeActions("time-actions", cl::Optional, cl::init(false), cl::desc("Print execution time for each action taken")); -cl::opt ShowStats("stats", cl::Optional, cl::init(false), +static cl::opt ShowStats("stats", cl::Optional, cl::init(false), cl::desc("Print statistics accumulated during optimization")); //===----------------------------------------------------------------------===// @@ -215,7 +214,7 @@ static cl::list Languages("x", cl::ZeroOrMore, //===----------------------------------------------------------------------===// //=== GetFileType - determine type of a file //===----------------------------------------------------------------------===// -const std::string GetFileType(const std::string& fname, unsigned pos) { +static const std::string GetFileType(const std::string& fname, unsigned pos) { static std::vector::iterator langIt = Languages.begin(); static std::string CurrLang = ""; @@ -236,9 +235,7 @@ const std::string GetFileType(const std::string& fname, unsigned pos) { return fname.substr(fname.rfind('.', fname.size()) + 1); } -} // end anonymous namespace - -void handleTerminatingOptions(CompilerDriver* CD) { +static void handleTerminatingOptions(CompilerDriver* CD) { if (!PrintFileName.empty()) { sys::Path path = CD->GetPathForLinkageItem(PrintFileName, false); std::string p = path.toString(); @@ -252,6 +249,7 @@ void handleTerminatingOptions(CompilerDriver* CD) { /// @brief The main program for llvmc int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. // Make sure we print stack trace if we get bad signals sys::PrintStackTraceOnErrorSignal(); diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index d0accb53636..6afdc6834a3 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -22,6 +22,7 @@ #include "llvm/Target/TargetMachine.h" #include "llvm/Support/PassNameParser.h" #include "llvm/System/Signals.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/PluginLoader.h" #include "llvm/Support/Streams.h" #include "llvm/Support/SystemUtils.h" @@ -156,6 +157,7 @@ struct BasicBlockPassPrinter : public BasicBlockPass { // main for opt // int main(int argc, char **argv) { + llvm_shutdown_obj X; // Call llvm_shutdown() on exit. try { cl::ParseCommandLineOptions(argc, argv, " llvm .bc -> .bc modular optimizer and analysis printer \n");