diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/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, Flags<[CC1Option]>, + HelpText<"Include precompiled header file">, MetaVarName<"">, + 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, EnumName<"include">, MetaVarName<"">, HelpText<"Include file before parsing">, Flags<[CC1Option]>; -def include_pch : Separate<["-"], "include-pch">, Group, Flags<[CC1Option]>, - HelpText<"Include precompiled header file">, MetaVarName<"">; def verify_pch : Flag<["-"], "verify-pch">, 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">, diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/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(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.