[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