[llvm-branch-commits] [llvm] e2fc85c - [clang][cli] Better defaults for MarshallingInfoString
Jan Svoboda via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Dec 14 01:04:51 PST 2020
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";
More information about the llvm-branch-commits
mailing list