[lld] r374297 - Use error instead of fatal to report usage errors

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 10 02:46:41 PDT 2019


Author: ruiu
Date: Thu Oct 10 02:46:41 2019
New Revision: 374297

URL: http://llvm.org/viewvc/llvm-project?rev=374297&view=rev
Log:
Use error instead of fatal to report usage errors

Differential Revision: https://reviews.llvm.org/D68768

Modified:
    lld/trunk/MinGW/Driver.cpp
    lld/trunk/test/MinGW/driver.test

Modified: lld/trunk/MinGW/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/MinGW/Driver.cpp?rev=374297&r1=374296&r2=374297&view=diff
==============================================================================
--- lld/trunk/MinGW/Driver.cpp (original)
+++ lld/trunk/MinGW/Driver.cpp Thu Oct 10 02:46:41 2019
@@ -103,9 +103,9 @@ opt::InputArgList MinGWOptTable::parse(A
   opt::InputArgList args = this->ParseArgs(vec, missingIndex, missingCount);
 
   if (missingCount)
-    fatal(StringRef(args.getArgString(missingIndex)) + ": missing argument");
+    error(StringRef(args.getArgString(missingIndex)) + ": missing argument");
   for (auto *arg : args.filtered(OPT_UNKNOWN))
-    fatal("unknown argument: " + arg->getAsString(args));
+    error("unknown argument: " + arg->getAsString(args));
   return args;
 }
 
@@ -160,9 +160,14 @@ searchLibrary(StringRef name, ArrayRef<S
 // Convert Unix-ish command line arguments to Windows-ish ones and
 // then call coff::link.
 bool mingw::link(ArrayRef<const char *> argsArr, raw_ostream &diag) {
+  enableColors(diag.has_colors());
+
   MinGWOptTable parser;
   opt::InputArgList args = parser.parse(argsArr.slice(1));
 
+  if (errorCount())
+    return false;
+
   if (args.hasArg(OPT_help)) {
     printHelp(argsArr[0]);
     return true;
@@ -183,8 +188,10 @@ bool mingw::link(ArrayRef<const char *>
   if (args.hasArg(OPT_version))
     return true;
 
-  if (!args.hasArg(OPT_INPUT) && !args.hasArg(OPT_l))
-    fatal("no input files");
+  if (!args.hasArg(OPT_INPUT) && !args.hasArg(OPT_l)) {
+    error("no input files");
+    return false;
+  }
 
   std::vector<std::string> linkArgs;
   auto add = [&](const Twine &s) { linkArgs.push_back(s.str()); };
@@ -290,7 +297,7 @@ bool mingw::link(ArrayRef<const char *>
     else if (s == "safe" || s == "none")
       add("-opt:noicf");
     else
-      fatal("unknown parameter: --icf=" + s);
+      error("unknown parameter: --icf=" + s);
   } else {
     add("-opt:noicf");
   }
@@ -306,7 +313,7 @@ bool mingw::link(ArrayRef<const char *>
     else if (s == "arm64pe")
       add("-machine:arm64");
     else
-      fatal("unknown parameter: -m" + s);
+      error("unknown parameter: -m" + s);
   }
 
   for (auto *a : args.filtered(OPT_mllvm))

Modified: lld/trunk/test/MinGW/driver.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/MinGW/driver.test?rev=374297&r1=374296&r2=374297&view=diff
==============================================================================
--- lld/trunk/test/MinGW/driver.test (original)
+++ lld/trunk/test/MinGW/driver.test Thu Oct 10 02:46:41 2019
@@ -214,3 +214,12 @@ HELP: --enable-auto-import
 RUN: ld.lld -### -m i386pep foo.o -delayload user32.dll --delayload shell32.dll | FileCheck -check-prefix DELAYLOAD %s
 RUN: ld.lld -### -m i386pep foo.o -delayload=user32.dll --delayload=shell32.dll | FileCheck -check-prefix DELAYLOAD %s
 DELAYLOAD: -delayload:user32.dll -delayload:shell32.dll
+
+RUN: not ld.lld -m i386pep -entry 2>&1 | FileCheck -check-prefix MISSING_ARG %s
+MISSING_ARG: error: -entry: missing argument
+
+RUN: not ld.lld -m i386pep --foo 2>&1 | FileCheck -check-prefix UNKNOWN_ARG %s
+UNKNOWN_ARG: error: unknown argument: --foo
+
+RUN: not ld.lld -m i386pep 2>&1 | FileCheck -check-prefix NO_INPUT_FILES %s
+NO_INPUT_FILES: error: no input files




More information about the llvm-commits mailing list