diff --git a/tools/llvmc/llvmc.cpp b/tools/llvmc/llvmc.cpp
index 3b22149..081ae45 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 <iostream>
-
 using namespace llvm;
 
-namespace {
 //===----------------------------------------------------------------------===//
 //===          PHASE OPTIONS
 //===----------------------------------------------------------------------===//
-cl::opt<CompilerDriver::Phases> FinalPhase(cl::Optional,
+static cl::opt<CompilerDriver::Phases> FinalPhase(cl::Optional,
   cl::desc("Choose final phase of compilation:"),
   cl::init(CompilerDriver::LINKING),
   cl::values(
@@ -46,7 +45,7 @@
 //===----------------------------------------------------------------------===//
 //===          OPTIMIZATION OPTIONS
 //===----------------------------------------------------------------------===//
-cl::opt<CompilerDriver::OptimizationLevels> OptLevel(cl::ZeroOrMore,
+static cl::opt<CompilerDriver::OptimizationLevels> OptLevel(cl::ZeroOrMore,
   cl::desc("Choose level of optimization to apply:"),
   cl::init(CompilerDriver::OPT_FAST_COMPILE),
   cl::values(
@@ -70,48 +69,48 @@
 //===          TOOL OPTIONS
 //===----------------------------------------------------------------------===//
 
-cl::list<std::string> PreprocessorToolOpts("Tpre", cl::ZeroOrMore,
+static cl::list<std::string> 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<std::string> TranslatorToolOpts("Ttrn", cl::ZeroOrMore,
+static cl::list<std::string> TranslatorToolOpts("Ttrn", cl::ZeroOrMore,
   cl::desc("Pass specific options to the assembler"),
   cl::value_desc("option"));
 
-cl::list<std::string> AssemblerToolOpts("Tasm", cl::ZeroOrMore,
+static cl::list<std::string> 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<std::string> OptimizerToolOpts("Topt", cl::ZeroOrMore,
+static cl::list<std::string> OptimizerToolOpts("Topt", cl::ZeroOrMore,
   cl::desc("Pass specific options to the optimizer"),
   cl::value_desc("option"));
 
-cl::list<std::string> LinkerToolOpts("Tlnk", cl::ZeroOrMore,
+static cl::list<std::string> 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<std::string> fOpts("f", cl::ZeroOrMore, cl::Prefix,
+static cl::list<std::string> fOpts("f", cl::ZeroOrMore, cl::Prefix,
   cl::desc("Pass through -f options to compiler tools"),
   cl::value_desc("option"));
 
-cl::list<std::string> MOpts("M", cl::ZeroOrMore, cl::Prefix,
+static cl::list<std::string> MOpts("M", cl::ZeroOrMore, cl::Prefix,
   cl::desc("Pass through -M options to compiler tools"),
   cl::value_desc("option"));
 
-cl::list<std::string> WOpts("W", cl::ZeroOrMore, cl::Prefix,
+static cl::list<std::string> WOpts("W", cl::ZeroOrMore, cl::Prefix,
   cl::desc("Pass through -W options to compiler tools"),
   cl::value_desc("option"));
 
-cl::list<std::string> BOpt("B", cl::ZeroOrMore, cl::Prefix,
+static cl::list<std::string> BOpt("B", cl::ZeroOrMore, cl::Prefix,
   cl::desc("Specify path to find llvmc sub-tools"),
   cl::value_desc("dir"));
 
@@ -119,17 +118,17 @@
 //===          INPUT OPTIONS
 //===----------------------------------------------------------------------===//
 
-cl::list<std::string> LibPaths("L", cl::Prefix,
+static cl::list<std::string> LibPaths("L", cl::Prefix,
   cl::desc("Specify a library search path"), cl::value_desc("dir"));
 
-cl::list<std::string> Libraries("l", cl::Prefix,
+static cl::list<std::string> Libraries("l", cl::Prefix,
   cl::desc("Specify base name of libraries to link to"), cl::value_desc("lib"));
 
-cl::list<std::string> Includes("I", cl::Prefix,
+static cl::list<std::string> Includes("I", cl::Prefix,
   cl::desc("Specify location to search for included source"),
   cl::value_desc("dir"));
 
-cl::list<std::string> Defines("D", cl::Prefix,
+static cl::list<std::string> Defines("D", cl::Prefix,
   cl::desc("Specify a pre-processor symbol to define"),
   cl::value_desc("symbol"));
 
@@ -137,22 +136,22 @@
 //===          OUTPUT OPTIONS
 //===----------------------------------------------------------------------===//
 
-cl::opt<std::string> OutputFilename("o",
+static cl::opt<std::string> OutputFilename("o",
   cl::desc("Override output filename"), cl::value_desc("file"));
 
-cl::opt<std::string> OutputMachine("m", cl::Prefix,
+static cl::opt<std::string> OutputMachine("m", cl::Prefix,
   cl::desc("Specify a target machine"), cl::value_desc("machine"));
 
-cl::opt<bool> Native("native", cl::init(false),
+static cl::opt<bool> Native("native", cl::init(false),
   cl::desc("Generative native code instead of bytecode"));
 
-cl::opt<bool> DebugOutput("g", cl::init(false),
+static cl::opt<bool> DebugOutput("g", cl::init(false),
   cl::desc("Generate objects that include debug symbols"));
 
-cl::opt<bool> StripOutput("strip", cl::init(false),
+static cl::opt<bool> StripOutput("strip", cl::init(false),
   cl::desc("Strip all symbols from linked output file"));
 
-cl::opt<std::string> PrintFileName("print-fname", cl::Optional,
+static cl::opt<std::string> PrintFileName("print-fname", cl::Optional,
   cl::value_desc("file"),
   cl::desc("Print the full path for the option's value"));
 
@@ -160,28 +159,28 @@
 //===          INFORMATION OPTIONS
 //===----------------------------------------------------------------------===//
 
-cl::opt<bool> DryRun("dry-run", cl::Optional, cl::init(false),
+static cl::opt<bool> 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<bool> Verbose("verbose", cl::Optional, cl::init(false),
+static cl::opt<bool> 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<bool> Debug("debug", cl::Optional, cl::init(false),
+static cl::opt<bool> 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<bool> TimeActions("time-actions", cl::Optional, cl::init(false),
+static cl::opt<bool> TimeActions("time-actions", cl::Optional, cl::init(false),
   cl::desc("Print execution time for each action taken"));
 
-cl::opt<bool> ShowStats("stats", cl::Optional, cl::init(false),
+static cl::opt<bool> ShowStats("stats", cl::Optional, cl::init(false),
   cl::desc("Print statistics accumulated during optimization"));
 
 //===----------------------------------------------------------------------===//
@@ -215,7 +214,7 @@
 //===----------------------------------------------------------------------===//
 //===          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<std::string>::iterator langIt = Languages.begin();
   static std::string CurrLang = "";
 
@@ -236,9 +235,7 @@
   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 @@
 
 /// @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();
 
