[llvm] [Option] Declare library command line options in TableGen (PR #226087)

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 30 19:24:56 PDT 2026


================
@@ -1593,6 +1638,24 @@ bool CommandLineParser::ParseCommandLineOptions(
         Handler = LookupLongOption(SubCommand::getTopLevel(), ArgName, Value,
                                    LongOptionsUseDoubleDash, HaveDoubleDash);
 
+      if (!Handler && (!LongOptionsUseDoubleDash || HaveDoubleDash)) {
+        if (LibraryOptions *L = lookupLibraryOption(ArgName.split('=').first)) {
+          // An option takes at most one separate value.
+          StringSaver Saver(LibraryArgAlloc);
+          const char *Args[2];
+          unsigned NumArgs = std::min(argc - i, 2);
+          for (unsigned J = 0; J != NumArgs; ++J)
+            Args[J] = Saver.save(argv[i + J]).data();
+          unsigned N = 1;
+          if (Error E = L->parse(ArrayRef(Args, NumArgs), N)) {
----------------
MaskRay wrote:

It extends the lifetime. 
The strings are backed by `BumpPtrAllocator LibraryArgAlloc`, a member variable of `globalParser()` (static storage). 

https://github.com/llvm/llvm-project/pull/226087


More information about the llvm-commits mailing list