[PATCH] D84672: Port PreprocessorOpts simple string based options to new option parsing system
Daniel Grumberg via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 27 09:56:50 PDT 2020
dang created this revision.
dang added a reviewer: Bigcheese.
Herald added subscribers: cfe-commits, dexonsmith.
Herald added a project: clang.
Depends on D84671 <https://reviews.llvm.org/D84671>
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D84672
Files:
clang/include/clang/Driver/Options.td
clang/lib/Frontend/CompilerInvocation.cpp
Index: clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -2677,11 +2677,8 @@
static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
DiagnosticsEngine &Diags,
frontend::ActionKind Action) {
- Opts.ImplicitPCHInclude = std::string(Args.getLastArgValue(OPT_include_pch));
Opts.PCHWithHdrStop = Args.hasArg(OPT_pch_through_hdrstop_create) ||
Args.hasArg(OPT_pch_through_hdrstop_use);
- Opts.PCHThroughHeader =
- std::string(Args.getLastArgValue(OPT_pch_through_header_EQ));
for (const auto *A : Args.filtered(OPT_error_on_deserialized_pch_decl))
Opts.DeserializedPCHDeclsToErrorOn.insert(A->getValue());
@@ -2747,19 +2744,6 @@
Opts.addRemappedFile(Split.first, Split.second);
}
- if (Arg *A = Args.getLastArg(OPT_fobjc_arc_cxxlib_EQ)) {
- StringRef Name = A->getValue();
- unsigned Library = llvm::StringSwitch<unsigned>(Name)
- .Case("libc++", ARCXX_libcxx)
- .Case("libstdc++", ARCXX_libstdcxx)
- .Case("none", ARCXX_nolib)
- .Default(~0U);
- if (Library == ~0U)
- Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << Name;
- else
- Opts.ObjCXXARCStandardLibrary = (ObjCXXARCStandardLibraryKind)Library;
- }
-
// Always avoid lexing editor placeholders when we're just running the
// preprocessor as we never want to emit the
// "editor placeholder in source file" error in PP only mode.
Index: clang/include/clang/Driver/Options.td
===================================================================
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -1783,6 +1783,10 @@
HelpText<"undef all system defines">,
MarshallingInfoFlag<"PreprocessorOpts->UsePredefines", "true">, IsNegative;
+def include_pch : Separate<["-"], "include-pch">, Group<clang_i_Group>, Flags<[CC1Option]>,
+ HelpText<"Include precompiled header file">, MetaVarName<"<file>">,
+ MarshallingInfoString<"PreprocessorOpts->ImplicitPCHInclude">;
+
let Flags = [CC1Option, NoDriverOption] in {
def pch_through_hdrstop_create : Flag<["-"], "pch-through-hdrstop-create">,
@@ -1807,6 +1811,15 @@
HelpText<"Disable any #pragma clang __debug that can lead to crashing behavior. This is meant for testing.">,
MarshallingInfoFlag<"PreprocessorOpts->DisablePragmaDebugCrash", "false">;
+def pch_through_header_EQ : Joined<["-"], "pch-through-header=">,
+ HelpText<"Stop PCH generation after including this file. When using a PCH, "
+ "skip tokens until after this file is included.">,
+ MarshallingInfoString<"PreprocessorOpts->PCHThroughHeader">;
+def fobjc_arc_cxxlib_EQ : Joined<["-"], "fobjc-arc-cxxlib=">,
+ HelpText<"Objective-C++ Automatic Reference Counting standard library kind">, Values<"libc++,libstdc++,none">,
+ MarshallingInfoString<"PreprocessorOpts->ObjCXXARCStandardLibrary", "ARCXX_nolib">,
+ NormalizedValues<["ARCXX_libcxx", "ARCXX_libstdcxx", "ARCXX_nolib"]>, AutoNormalizeEnum;
+
} // Flags = [CC1Option, NoDriverOption]
// Preprocessor Output Options
@@ -3034,8 +3047,6 @@
def image__base : Separate<["-"], "image_base">;
def include_ : JoinedOrSeparate<["-", "--"], "include">, Group<clang_i_Group>, EnumName<"include">,
MetaVarName<"<file>">, HelpText<"Include file before parsing">, Flags<[CC1Option]>;
-def include_pch : Separate<["-"], "include-pch">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Include precompiled header file">, MetaVarName<"<file>">;
def verify_pch : Flag<["-"], "verify-pch">, Group<Action_Group>, Flags<[CC1Option]>,
HelpText<"Load and verify that a pre-compiled header file is not stale">;
def init : Separate<["-"], "init">;
@@ -4706,9 +4717,6 @@
def fdump_record_layouts : Flag<["-"], "fdump-record-layouts">,
HelpText<"Dump record layout information">;
-def pch_through_header_EQ : Joined<["-"], "pch-through-header=">,
- HelpText<"Stop PCH generation after including this file. When using a PCH, "
- "skip tokens until after this file is included.">;
def pch_through_hdrstop_use : Flag<["-"], "pch-through-hdrstop-use">,
HelpText<"When using a PCH, skip tokens until after a #pragma hdrstop.">;
@@ -4721,8 +4729,6 @@
def fno_wchar : Flag<["-"], "fno-wchar">,
HelpText<"Disable C++ builtin type wchar_t">;
-def fobjc_arc_cxxlib_EQ : Joined<["-"], "fobjc-arc-cxxlib=">,
- HelpText<"Objective-C++ Automatic Reference Counting standard library kind">, Values<"libc++,libstdc++,none">;
def fobjc_runtime_has_weak : Flag<["-"], "fobjc-runtime-has-weak">,
HelpText<"The target Objective-C runtime supports ARC weak operations">;
def error_on_deserialized_pch_decl : Separate<["-"], "error-on-deserialized-decl">,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D84672.280955.patch
Type: text/x-patch
Size: 4928 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200727/75d168a9/attachment.bin>
More information about the cfe-commits
mailing list