@@ -2454,7 +2454,7 @@ static const StringRef GetInputKindName(InputKind IK) {
2454
2454
2455
2455
static void ParseLangArgs (LangOptions &Opts, ArgList &Args, InputKind IK,
2456
2456
const TargetOptions &TargetOpts,
2457
- PreprocessorOptions &PPOpts, CodeGenOptions &CGOpts,
2457
+ PreprocessorOptions &PPOpts,
2458
2458
DiagnosticsEngine &Diags) {
2459
2459
// FIXME: Cleanup per-file based stuff.
2460
2460
LangStandard::Kind LangStd = LangStandard::lang_unspecified;
@@ -3188,13 +3188,21 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
3188
3188
Opts.UnsafeFPMath = Args.hasArg (OPT_menable_unsafe_fp_math) ||
3189
3189
Args.hasArg (OPT_cl_unsafe_math_optimizations) ||
3190
3190
Args.hasArg (OPT_cl_fast_relaxed_math);
3191
- Opts.AllowFPReassoc = Opts.FastMath || CGOpts.Reassociate ;
3192
- Opts.NoHonorNaNs =
3193
- Opts.FastMath || CGOpts.NoNaNsFPMath || Opts.FiniteMathOnly ;
3194
- Opts.NoHonorInfs =
3195
- Opts.FastMath || CGOpts.NoInfsFPMath || Opts.FiniteMathOnly ;
3196
- Opts.NoSignedZero = Opts.FastMath || CGOpts.NoSignedZeros ;
3197
- Opts.AllowRecip = Opts.FastMath || CGOpts.ReciprocalMath ;
3191
+ Opts.AllowFPReassoc = Opts.FastMath || Args.hasArg (OPT_mreassociate);
3192
+ Opts.NoHonorNaNs = Opts.FastMath || Opts.FiniteMathOnly ||
3193
+ Args.hasArg (OPT_menable_no_nans) ||
3194
+ Args.hasArg (OPT_cl_unsafe_math_optimizations) ||
3195
+ Args.hasArg (OPT_cl_finite_math_only) ||
3196
+ Args.hasArg (OPT_cl_fast_relaxed_math);
3197
+ Opts.NoHonorInfs = Opts.FastMath || Opts.FiniteMathOnly ||
3198
+ Args.hasArg (OPT_menable_no_infinities) ||
3199
+ Args.hasArg (OPT_cl_finite_math_only) ||
3200
+ Args.hasArg (OPT_cl_fast_relaxed_math);
3201
+ Opts.NoSignedZero = Opts.FastMath || (Args.hasArg (OPT_fno_signed_zeros) ||
3202
+ Args.hasArg (OPT_cl_no_signed_zeros) ||
3203
+ Args.hasArg (OPT_cl_unsafe_math_optimizations) ||
3204
+ Args.hasArg (OPT_cl_fast_relaxed_math));
3205
+ Opts.AllowRecip = Opts.FastMath || Args.hasArg (OPT_freciprocal_math);
3198
3206
// Currently there's no clang option to enable this individually
3199
3207
Opts.ApproxFunc = Opts.FastMath ;
3200
3208
@@ -3652,7 +3660,7 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,
3652
3660
// Other LangOpts are only initialized when the input is not AST or LLVM IR.
3653
3661
// FIXME: Should we really be calling this for an Language::Asm input?
3654
3662
ParseLangArgs (LangOpts, Args, DashX, Res.getTargetOpts (),
3655
- Res.getPreprocessorOpts (), Res. getCodeGenOpts (), Diags);
3663
+ Res.getPreprocessorOpts (), Diags);
3656
3664
if (Res.getFrontendOpts ().ProgramAction == frontend::RewriteObjC)
3657
3665
LangOpts.ObjCExceptions = 1 ;
3658
3666
if (T.isOSDarwin () && DashX.isPreprocessed ()) {
0 commit comments