[PATCH] D103554: [flang][driver] Add checks for missing option arguments

Andrzej Warzynski via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 2 13:57:09 PDT 2021


awarzynski created this revision.
Herald added subscribers: usaxena95, kadircet.
Herald added a reviewer: sscalpone.
awarzynski requested review of this revision.
Herald added subscribers: llvm-commits, ilya-biryukov.
Herald added a project: LLVM.

With this patch, the following invocation of the frontend driver will
return an error:

  flang-new -fc1 input-file.f90 -o

Similar logic applies to other options that require arguments.

Similar checks are already available in the compiler driver, flang-new
(that's implemented in clangDriver).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D103554

Files:
  flang/lib/Frontend/CompilerInvocation.cpp
  flang/test/Driver/missing-arg.f90


Index: flang/test/Driver/missing-arg.f90
===================================================================
--- /dev/null
+++ flang/test/Driver/missing-arg.f90
@@ -0,0 +1,20 @@
+! Make sure that frontend driver options that require arguments are
+! correctly rejected when the argument value is missing.
+
+! REQUIRES: new-flang-driver
+
+!-----------
+! RUN lines
+!-----------
+! RUN: not %flang_fc1 -E %s -o 2>&1 | FileCheck %s
+! RUN: not %flang_fc1 -E %s -U 2>&1 | FileCheck %s
+! RUN: not %flang_fc1 -E %s -D 2>&1 | FileCheck %s
+! RUN: not %flang_fc1 -E %s -I 2>&1 | FileCheck %s
+! RUN: not %flang_fc1 -E %s -J 2>&1 | FileCheck %s
+! RUN: not %flang_fc1 -E %s -module-dir 2>&1 | FileCheck %s
+! RUN: not %flang_fc1 -E %s -fintrinsic-modules-path 2>&1 | FileCheck %s
+
+!-----------------------
+! EXPECTED OUTPUT
+!-----------------------
+! CHECK: error: argument to '-{{.*}}' is missing (expected 1 value)
Index: flang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- flang/lib/Frontend/CompilerInvocation.cpp
+++ flang/lib/Frontend/CompilerInvocation.cpp
@@ -495,6 +495,13 @@
   llvm::opt::InputArgList args = opts.ParseArgs(
       commandLineArgs, missingArgIndex, missingArgCount, includedFlagsBitmask);
 
+  // Check for missing argument error.
+  if (missingArgCount) {
+    diags.Report(clang::diag::err_drv_missing_argument)
+        << args.getArgString(missingArgIndex) << missingArgCount;
+    success = false;
+  }
+
   // Issue errors on unknown arguments
   for (const auto *a : args.filtered(clang::driver::options::OPT_UNKNOWN)) {
     auto argString = a->getAsString(args);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103554.349369.patch
Type: text/x-patch
Size: 1661 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210602/75908f06/attachment.bin>


More information about the llvm-commits mailing list