Author: Jan Svoboda Date: 2020-12-14T09:59:56+01:00 New Revision: e2fc85c69b3f7aad89b5b59eca537bec96a24682
URL: https://github.com/llvm/llvm-project/commit/e2fc85c69b3f7aad89b5b59eca537bec96a24682 DIFF: https://github.com/llvm/llvm-project/commit/e2fc85c69b3f7aad89b5b59eca537bec96a24682.diff LOG: [clang][cli] Better defaults for MarshallingInfoString Depends on D84018 Reviewed By: Bigcheese Original patch by Daniel Grumberg. Differential Revision: https://reviews.llvm.org/D84185 Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/Option/OptParser.td Removed: ################################################################################ diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 36e816e5345c..4af1c0447dc0 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -3933,7 +3933,7 @@ def target_feature : Separate<["-"], "target-feature">, def triple : Separate<["-"], "triple">, HelpText<"Specify target triple (e.g. i686-apple-darwin9)">, MarshallingInfoString<"TargetOpts->Triple", "llvm::Triple::normalize(llvm::sys::getDefaultTargetTriple())">, - AlwaysEmit, Normalizer<"normalizeTriple">, DenormalizeString; + AlwaysEmit, Normalizer<"normalizeTriple">; def target_abi : Separate<["-"], "target-abi">, HelpText<"Target a particular ABI type">; def target_sdk_version_EQ : Joined<["-"], "target-sdk-version=">, @@ -3998,7 +3998,8 @@ def analyzer_viz_egraph_graphviz : Flag<["-"], "analyzer-viz-egraph-graphviz">, HelpText<"Display exploded graph using GraphViz">, MarshallingInfoFlag<"AnalyzerOpts->visualizeExplodedGraphWithGraphViz">; def analyzer_dump_egraph : Separate<["-"], "analyzer-dump-egraph">, - HelpText<"Dump exploded graph to the specified file">; + HelpText<"Dump exploded graph to the specified file">, + MarshallingInfoString<"AnalyzerOpts->DumpExplodedGraphTo">; def analyzer_dump_egraph_EQ : Joined<["-"], "analyzer-dump-egraph=">, Alias<analyzer_dump_egraph>; def analyzer_inline_max_stack_depth : Separate<["-"], "analyzer-inline-max-stack-depth">, diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 836f34c64e28..3add57ce60f4 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -272,6 +272,15 @@ static void denormalizeSimpleEnumJoined(SmallVectorImpl<const char *> &Args, "the tablegen option description"); } +static Optional<std::string> normalizeString(OptSpecifier Opt, int TableIndex, + const ArgList &Args, + DiagnosticsEngine &Diags) { + auto *Arg = Args.getLastArg(Opt); + if (!Arg) + return None; + return std::string(Arg->getValue()); +} + static void denormalizeString(SmallVectorImpl<const char *> &Args, const char *Spelling, CompilerInvocation::StringAllocator SA, @@ -498,8 +507,6 @@ static bool ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args, .Case("false", false) .Default(false); - Opts.DumpExplodedGraphTo = - std::string(Args.getLastArgValue(OPT_analyzer_dump_egraph)); Opts.AnalyzeSpecificFunction = std::string(Args.getLastArgValue(OPT_analyze_function)); Opts.maxBlockVisitOnPath = diff --git a/llvm/include/llvm/Option/OptParser.td b/llvm/include/llvm/Option/OptParser.td index 5dfe7bc7acc3..9e0ff1450920 100644 --- a/llvm/include/llvm/Option/OptParser.td +++ b/llvm/include/llvm/Option/OptParser.td @@ -155,8 +155,11 @@ class MarshallingInfo<code keypath, code defaultvalue> { code DefaultValue = defaultvalue; } -class MarshallingInfoString<code keypath, code defaultvalue> - : MarshallingInfo<keypath, defaultvalue> {} +class MarshallingInfoString<code keypath, code defaultvalue="std::string()"> + : MarshallingInfo<keypath, defaultvalue> { + code Normalizer = "normalizeString"; + code Denormalizer = "denormalizeString"; +} class MarshallingInfoFlag<code keypath, code defaultvalue = "false"> : MarshallingInfo<keypath, defaultvalue> { @@ -189,7 +192,6 @@ class Normalizer<code normalizer> { code Normalizer = normalizer; } class Denormalizer<code denormalizer> { code Denormalizer = denormalizer; } class NormalizedValuesScope<code scope> { code NormalizedValuesScope = scope; } class NormalizedValues<list<code> definitions> { list<code> NormalizedValues = definitions; } -class DenormalizeString { code Denormalizer = "denormalizeString"; } class AutoNormalizeEnum { code Normalizer = "normalizeSimpleEnum"; code Denormalizer = "denormalizeSimpleEnum"; _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits