diff --git a/llvm/tools/llvm-ld/llvm-ld.cpp b/llvm/tools/llvm-ld/llvm-ld.cpp
index 31c1812..3512c2a 100644
--- a/llvm/tools/llvm-ld/llvm-ld.cpp
+++ b/llvm/tools/llvm-ld/llvm-ld.cpp
@@ -389,29 +389,30 @@
   cl::ParseCommandLineOptions(argc, argv, " llvm linker for GCC\n");
   sys::PrintStackTraceOnErrorSignal();
 
-  std::string ModuleID("llvm-ld-output");
-  std::auto_ptr<Module> Composite(new Module(ModuleID));
-
-  // We always look first in the current directory when searching for libraries.
-  LibPaths.insert(LibPaths.begin(), ".");
-
-  // If the user specified an extra search path in their environment, respect
-  // it.
-  if (char *SearchPath = getenv("LLVM_LIB_SEARCH_PATH"))
-    LibPaths.push_back(SearchPath);
-
   // Remove any consecutive duplicates of the same library...
   Libraries.erase(std::unique(Libraries.begin(), Libraries.end()),
                   Libraries.end());
 
-  // Link in all of the files
-  if (LinkFiles(argv[0], Composite.get(), InputFilenames, Verbose))
-    return 1; // Error already printed
+  // Set up the Composite module.
+  std::auto_ptr<Module> Composite(0);
 
-  // Link in all of the libraries next...
-  if (!LinkAsLibrary)
-    LinkLibraries(argv[0], Composite.get(), Libraries, LibPaths,
-                  Verbose, Native);
+  if (LinkAsLibrary) {
+    // Link in only the files, we ignore libraries in this case.
+    Composite.reset( new Module(argv[0]) );
+    if (LinkFiles(argv[0], Composite.get(), InputFilenames, Verbose))
+      return 1; // Error already printed
+  } else {
+    // Build a list of the items from our command line
+    LinkItemList Items;
+    BuildLinkItems(Items, InputFilenames, Libraries);
+
+    // Link all the items together
+    Composite.reset( LinkItems(argv[0], Items, LibPaths, Verbose, Native) );
+
+    // Check for an error during linker
+    if (!Composite.get())
+      return 1; // Error already printed
+  }
 
   // Optimize the module
   Optimize(Composite.get());
