diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2020-12-21 14:28:09 +0100 |
---|---|---|
committer | Jan Svoboda <jan_svoboda@apple.com> | 2020-12-22 14:11:16 +0100 |
commit | 63a24816f561a5d8e28ca7054892bd8602618be4 (patch) | |
tree | d27c478f31eb58eb164ddf92048bf1a9727c6ebe /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 44e74c75e614af453f4824cb9bf1f0056d7cf426 (diff) | |
download | llvm-63a24816f561a5d8e28ca7054892bd8602618be4.zip llvm-63a24816f561a5d8e28ca7054892bd8602618be4.tar.gz llvm-63a24816f561a5d8e28ca7054892bd8602618be4.tar.bz2 |
[clang][cli] Implement `getAllArgValues` marshalling
This infrastructure can be used ~30 more command line options.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D93631
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index fc5fd15..d7c1a6f 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -323,6 +323,23 @@ static Optional<IntTy> normalizeStringIntegral(OptSpecifier Opt, int, return Res; } +static Optional<std::vector<std::string>> +normalizeStringVector(OptSpecifier Opt, int, const ArgList &Args, + DiagnosticsEngine &) { + return Args.getAllArgValues(Opt); +} + +static void denormalizeStringVector(SmallVectorImpl<const char *> &Args, + const char *Spelling, + CompilerInvocation::StringAllocator SA, + Option::OptionClass OptClass, + unsigned TableIndex, + const std::vector<std::string> &Values) { + for (const std::string &Value : Values) { + denormalizeString(Args, Spelling, SA, OptClass, TableIndex, Value); + } +} + static Optional<std::string> normalizeTriple(OptSpecifier Opt, int TableIndex, const ArgList &Args, DiagnosticsEngine &Diags) { @@ -1715,7 +1732,6 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Opts.LLVMArgs = Args.getAllArgValues(OPT_mllvm); Opts.ASTDumpDecls = Args.hasArg(OPT_ast_dump, OPT_ast_dump_EQ); Opts.ASTDumpAll = Args.hasArg(OPT_ast_dump_all, OPT_ast_dump_all_EQ); - Opts.ModuleMapFiles = Args.getAllArgValues(OPT_fmodule_map_file); // Only the -fmodule-file=<file> form. for (const auto *A : Args.filtered(OPT_fmodule_file)) { StringRef Val = A->getValue(); |