summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/ToolChains/Clang.cpp6
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp16
-rw-r--r--clang/lib/Sema/SemaExpr.cpp22
3 files changed, 9 insertions, 35 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index c39c1c7e3cf..6aff423bd18 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -4678,11 +4678,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
if (TC.SupportsProfiling())
Args.AddLastArg(CmdArgs, options::OPT_mfentry);
+ // -flax-vector-conversions is default.
+ if (!Args.hasFlag(options::OPT_flax_vector_conversions,
+ options::OPT_fno_lax_vector_conversions))
+ CmdArgs.push_back("-fno-lax-vector-conversions");
+
if (Args.getLastArg(options::OPT_fapple_kext) ||
(Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType)))
CmdArgs.push_back("-fapple-kext");
- Args.AddLastArg(CmdArgs, options::OPT_flax_vector_conversions_EQ);
Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 0e29e6d9d4d..3db0b8827ad 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -2265,7 +2265,7 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
if (Opts.OpenCL) {
Opts.AltiVec = 0;
Opts.ZVector = 0;
- Opts.setLaxVectorConversions(LangOptions::LaxVectorConversionKind::None);
+ Opts.LaxVectorConversions = 0;
Opts.setDefaultFPContractMode(LangOptions::FPC_On);
Opts.NativeHalfType = 1;
Opts.NativeHalfArgsAndReturns = 1;
@@ -2667,18 +2667,8 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
Opts.WritableStrings = Args.hasArg(OPT_fwritable_strings);
Opts.ConstStrings = Args.hasFlag(OPT_fconst_strings, OPT_fno_const_strings,
Opts.ConstStrings);
- if (Arg *A = Args.getLastArg(OPT_flax_vector_conversions_EQ)) {
- using LaxKind = LangOptions::LaxVectorConversionKind;
- if (auto Kind = llvm::StringSwitch<Optional<LaxKind>>(A->getValue())
- .Case("none", LaxKind::None)
- .Case("integer", LaxKind::Integer)
- .Case("all", LaxKind::All)
- .Default(llvm::None))
- Opts.setLaxVectorConversions(*Kind);
- else
- Diags.Report(diag::err_drv_invalid_value)
- << A->getAsString(Args) << A->getValue();
- }
+ if (Args.hasArg(OPT_fno_lax_vector_conversions))
+ Opts.LaxVectorConversions = 0;
if (Args.hasArg(OPT_fno_threadsafe_statics))
Opts.ThreadsafeStatics = 0;
Opts.Exceptions = Args.hasArg(OPT_fexceptions);
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 84520052c61..849298433ac 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -6498,28 +6498,8 @@ bool Sema::areLaxCompatibleVectorTypes(QualType srcTy, QualType destTy) {
bool Sema::isLaxVectorConversion(QualType srcTy, QualType destTy) {
assert(destTy->isVectorType() || srcTy->isVectorType());
- switch (Context.getLangOpts().getLaxVectorConversions()) {
- case LangOptions::LaxVectorConversionKind::None:
+ if (!Context.getLangOpts().LaxVectorConversions)
return false;
-
- case LangOptions::LaxVectorConversionKind::Integer:
- if (!srcTy->isIntegralOrEnumerationType()) {
- auto *Vec = srcTy->getAs<VectorType>();
- if (!Vec || !Vec->getElementType()->isIntegralOrEnumerationType())
- return false;
- }
- if (!destTy->isIntegralOrEnumerationType()) {
- auto *Vec = destTy->getAs<VectorType>();
- if (!Vec || !Vec->getElementType()->isIntegralOrEnumerationType())
- return false;
- }
- // OK, integer (vector) -> integer (vector) bitcast.
- break;
-
- case LangOptions::LaxVectorConversionKind::All:
- break;
- }
-
return areLaxCompatibleVectorTypes(srcTy, destTy);
}
OpenPOWER on IntegriCloud