[PATCH] D150568: OptTable: stop parsing options after "--" alone.

Tim Northover via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 25 05:49:53 PDT 2023


t.p.northover updated this revision to Diff 525562.
t.p.northover added a comment.

Switch to existing solution for this. I think that makes the llvm-nm test probably the right place again so I've left it.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D150568/new/

https://reviews.llvm.org/D150568

Files:
  llvm/test/tools/llvm-nm/option--.test
  llvm/tools/llvm-nm/Opts.td
  llvm/tools/llvm-nm/llvm-nm.cpp


Index: llvm/tools/llvm-nm/llvm-nm.cpp
===================================================================
--- llvm/tools/llvm-nm/llvm-nm.cpp
+++ llvm/tools/llvm-nm/llvm-nm.cpp
@@ -2470,6 +2470,11 @@
     error("bad number of arguments (must be two arguments)",
           "for the -s option");
 
+  // Everything after `--` on its own should be considered an input file.
+  if (opt::Arg *A = Args.getLastArgNoClaim(OPT_DASH_DASH))
+    InputFilenames.insert(InputFilenames.end(), A->getValues().begin(),
+                          A->getValues().end());
+
   if (InputFilenames.empty())
     InputFilenames.push_back("a.out");
   if (InputFilenames.size() > 1)
Index: llvm/tools/llvm-nm/Opts.td
===================================================================
--- llvm/tools/llvm-nm/Opts.td
+++ llvm/tools/llvm-nm/Opts.td
@@ -81,3 +81,5 @@
 def : F<"v", "Alias for --numeric-sort">, Alias<numeric_sort>;
 def : F<"V", "Alias for --version">, Alias<version>;
 def : F<"W", "Alias for --no-weak">, Alias<no_weak>;
+
+def DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>;
Index: llvm/test/tools/llvm-nm/option--.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-nm/option--.test
@@ -0,0 +1,10 @@
+; RUN: not llvm-nm -- -weird-filename-that-doesnt-exist 2>&1 | FileCheck %s --check-prefix=CHECK-NOTOPT
+; CHECK-NOTOPT: error: -weird-filename-that-doesnt-exist: No such file or directory
+
+; RUN: llvm-as < %s > %p/-.bc
+; RUN: llvm-nm -- %p/-.bc | FileCheck %s
+
+; CHECK: foo
+define void @foo() {
+  ret void
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D150568.525562.patch
Type: text/x-patch
Size: 1579 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230525/ef030a91/attachment.bin>


More information about the llvm-commits mailing list