diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index 6d66268..9f7f0a4 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -252,7 +252,10 @@
     }        
   } else {
     std::string Err;
-    TheTarget = TargetRegistry::getClosestStaticTargetForModule(mod, Err);
+    TheTarget = TargetRegistry::lookupTarget(mod.getTargetTriple(), 
+                                             /*FallbackToHost=*/true,
+                                             /*RequireJIT=*/false,
+                                             Err);
     if (TheTarget == 0) {
       errs() << argv[0] << ": error auto-selecting target for module '"
              << Err << "'.  Please use the -march option to explicitly "
diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp
index ffc9b55..5212ab1 100644
--- a/tools/llvm-mc/llvm-mc.cpp
+++ b/tools/llvm-mc/llvm-mc.cpp
@@ -147,7 +147,10 @@
   // Get the target specific parser.
   std::string Error;
   const Target *TheTarget =
-    TargetRegistry::getClosestStaticTargetForTriple(Triple, Error);
+    TargetRegistry::lookupTarget(Triple, 
+                                 /*FallbackToHost=*/true,
+                                 /*RequireJIT=*/false,
+                                 Error);
   if (TheTarget == 0) {
     errs() << ProgName << ": error: unable to get target for '" << Triple
            << "', see --version and --triple.\n";
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index 93689e3..a264e73 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -330,8 +330,10 @@
         // create target machine from info for merged modules
         Module* mergedModule = _linker.getModule();
         const Target *march = 
-          TargetRegistry::getClosestStaticTargetForModule(*mergedModule, 
-                                                          errMsg);
+          TargetRegistry::lookupTarget(mergedModule->getTargetTriple(), 
+                                       /*FallbackToHost=*/true,
+                                       /*RequireJIT=*/false,
+                                       errMsg);
         if ( march == NULL )
             return true;
 
diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp
index a72938a..83dda0c 100644
--- a/tools/lto/LTOModule.cpp
+++ b/tools/lto/LTOModule.cpp
@@ -145,9 +145,10 @@
     if ( !m )
         return NULL;
     // find machine architecture for this module
-    const Target* march = 
-      TargetRegistry::getClosestStaticTargetForModule(*m, errMsg);
-
+    const Target* march = TargetRegistry::lookupTarget(m->getTargetTriple(), 
+                                                       /*FallbackToHost=*/true,
+                                                       /*RequireJIT=*/false,
+                                                       errMsg);
     if ( march == NULL ) 
         return NULL;
 
