aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJan Svoboda <jan_svoboda@apple.com>2021-01-27 08:47:54 +0100
committerJan Svoboda <jan_svoboda@apple.com>2021-01-27 08:55:30 +0100
commitb6d87e6a92a9dcaec0386d21e7160c1462a269f8 (patch)
treedee01e1d0ad6d976e372c95c9be297f9f6d7b90f /clang/lib/Frontend/CompilerInvocation.cpp
parent7c15e0f64ccc79a53ed2db258f1cb58ec452a957 (diff)
downloadllvm-b6d87e6a92a9dcaec0386d21e7160c1462a269f8.zip
llvm-b6d87e6a92a9dcaec0386d21e7160c1462a269f8.tar.gz
llvm-b6d87e6a92a9dcaec0386d21e7160c1462a269f8.tar.bz2
[clang][cli] Port LangOpts to marshalling system, pt.1
Port some miscellaneous language options to the marshalling system for oautomatic command line parsing and generation. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D95346
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp49
1 files changed, 2 insertions, 47 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index d8be4ea..12b1555 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -2017,6 +2017,8 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
Opts.HexFloats = Std.hasHexFloats();
Opts.ImplicitInt = Std.hasImplicitInt();
+ Opts.CPlusPlusModules = Opts.CPlusPlus20;
+
// Set OpenCL Version.
Opts.OpenCL = Std.isOpenCL();
if (LangStd == LangStandard::lang_opencl10)
@@ -2078,14 +2080,7 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
// C++ has wchar_t keyword.
Opts.WChar = Opts.CPlusPlus;
- Opts.CXXOperatorNames = Opts.CPlusPlus;
-
Opts.AlignedAllocation = Opts.CPlusPlus17;
-
- Opts.DollarIdents = !Opts.AsmPreprocessor;
-
- // Enable [[]] attributes in C++11 and C2x by default.
- Opts.DoubleSquareBracketAttributes = Opts.CPlusPlus11 || Opts.C2x;
}
/// Check if input file kind and language standard are compatible.
@@ -2263,9 +2258,6 @@ void CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
}
}
- if (Args.hasArg(OPT_fno_operator_names))
- Opts.CXXOperatorNames = 0;
-
if (Opts.ObjC) {
if (Arg *arg = Args.getLastArg(OPT_fobjc_runtime_EQ)) {
StringRef value = arg->getValue();
@@ -2337,8 +2329,6 @@ void CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
else if (Args.hasArg(OPT_fwrapv))
Opts.setSignedOverflowBehavior(LangOptions::SOB_Defined);
- Opts.MicrosoftExt = Opts.MSVCCompat || Args.hasArg(OPT_fms_extensions);
- Opts.AsmBlocks = Args.hasArg(OPT_fasm_blocks) || Opts.MicrosoftExt;
Opts.MSCompatibilityVersion = 0;
if (const Arg *A = Args.getLastArg(OPT_fms_compatibility_version)) {
VersionTuple VT;
@@ -2359,48 +2349,13 @@ void CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
Opts.Trigraphs =
Args.hasFlag(OPT_ftrigraphs, OPT_fno_trigraphs, Opts.Trigraphs);
- Opts.DollarIdents = Args.hasFlag(OPT_fdollars_in_identifiers,
- OPT_fno_dollars_in_identifiers,
- Opts.DollarIdents);
-
- // -ffixed-point
- Opts.FixedPoint =
- Args.hasFlag(OPT_ffixed_point, OPT_fno_fixed_point, /*Default=*/false) &&
- !Opts.CPlusPlus;
- Opts.PaddingOnUnsignedFixedPoint =
- Args.hasFlag(OPT_fpadding_on_unsigned_fixed_point,
- OPT_fno_padding_on_unsigned_fixed_point,
- /*Default=*/false) &&
- Opts.FixedPoint;
-
- Opts.RTTI = Opts.CPlusPlus && !Args.hasArg(OPT_fno_rtti);
- Opts.RTTIData = Opts.RTTI && !Args.hasArg(OPT_fno_rtti_data);
Opts.Blocks = Args.hasArg(OPT_fblocks) || (Opts.OpenCL
&& Opts.OpenCLVersion == 200);
- Opts.Coroutines = Opts.CPlusPlus20 || Args.hasArg(OPT_fcoroutines_ts);
Opts.ConvergentFunctions = Opts.OpenCL || (Opts.CUDA && Opts.CUDAIsDevice) ||
Opts.SYCLIsDevice ||
Args.hasArg(OPT_fconvergent_functions);
- Opts.DoubleSquareBracketAttributes =
- Args.hasFlag(OPT_fdouble_square_bracket_attributes,
- OPT_fno_double_square_bracket_attributes,
- Opts.DoubleSquareBracketAttributes);
-
- Opts.CPlusPlusModules = Opts.CPlusPlus20;
- Opts.Modules =
- Args.hasArg(OPT_fmodules) || Opts.ModulesTS || Opts.CPlusPlusModules;
- Opts.ModulesDeclUse =
- Args.hasArg(OPT_fmodules_decluse) || Opts.ModulesStrictDeclUse;
- // FIXME: We only need this in C++ modules / Modules TS if we might textually
- // enter a different module (eg, when building a header unit).
- Opts.ModulesLocalVisibility =
- Args.hasArg(OPT_fmodules_local_submodule_visibility) || Opts.ModulesTS ||
- Opts.CPlusPlusModules;
- Opts.ModulesSearchAll = Opts.Modules &&
- !Args.hasArg(OPT_fno_modules_search_all) &&
- Args.hasArg(OPT_fmodules_search_all);
Opts.CharIsSigned = Opts.OpenCL || !Args.hasArg(OPT_fno_signed_char);
Opts.WChar = Opts.CPlusPlus && !Args.hasArg(OPT_fno_wchar);
Opts.Char8 = Args.hasFlag(OPT_fchar8__t, OPT_fno_char8__t, Opts.CPlusPlus20);