Split LinkerDriver::createFiles. NFC.
authorRui Ueyama <ruiu@google.com>
Thu, 20 Oct 2016 04:47:47 +0000 (04:47 +0000)
committerRui Ueyama <ruiu@google.com>
Thu, 20 Oct 2016 04:47:47 +0000 (04:47 +0000)
llvm-svn: 284694

lld/ELF/Driver.cpp
lld/ELF/Driver.h

index 54a267f..fa0ac88 100644 (file)
@@ -306,6 +306,7 @@ void LinkerDriver::main(ArrayRef<const char *> ArgsArr) {
   readConfigs(Args);
   initLLVM(Args);
   createFiles(Args);
+  inferMachineType();
   checkOptions(Args);
   if (HasError)
     return;
@@ -324,7 +325,7 @@ void LinkerDriver::main(ArrayRef<const char *> ArgsArr) {
     link<ELF64BE>(Args);
     return;
   default:
-    error("target emulation unknown: -m or at least one .o file required");
+    llvm_unreachable("unknown Config->EKind");
   }
 }
 
@@ -636,17 +637,21 @@ void LinkerDriver::createFiles(opt::InputArgList &Args) {
 
   if (Files.empty() && !HasError)
     error("no input files");
+}
 
-  // If -m <machine_type> was not given, infer it from object files.
-  if (Config->EKind == ELFNoneKind) {
-    for (InputFile *F : Files) {
-      if (F->EKind == ELFNoneKind)
-        continue;
-      Config->EKind = F->EKind;
-      Config->EMachine = F->EMachine;
-      break;
-    }
+// If -m <machine_type> was not given, infer it from object files.
+void LinkerDriver::inferMachineType() {
+  if (Config->EKind != ELFNoneKind)
+    return;
+
+  for (InputFile *F : Files) {
+    if (F->EKind == ELFNoneKind)
+      continue;
+    Config->EKind = F->EKind;
+    Config->EMachine = F->EMachine;
+    return;
   }
+  error("target emulation unknown: -m or at least one .o file required");
 }
 
 // Do actual linking. Note that when this function is called,
index c1619ec..6d2d3d2 100644 (file)
@@ -38,6 +38,7 @@ private:
   llvm::Optional<MemoryBufferRef> readFile(StringRef Path);
   void readConfigs(llvm::opt::InputArgList &Args);
   void createFiles(llvm::opt::InputArgList &Args);
+  void inferMachineType();
   template <class ELFT> void link(llvm::opt::InputArgList &Args);
 
   // True if we are in --whole-archive and --no-whole-archive.