summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2011-12-09 23:41:18 +0000
committerDaniel Dunbar <daniel@zuster.org>2011-12-09 23:41:18 +0000
commit19939cc38063087787969debc91ad7478236ec20 (patch)
treef68e70d88f7ac3babb021d7c4c999ac6aa1a21a9 /clang/lib/Frontend/CompilerInvocation.cpp
parent8be2f6577e147ea695b702ba71a1a349232849b1 (diff)
downloadbcm5719-llvm-19939cc38063087787969debc91ad7478236ec20.tar.gz
bcm5719-llvm-19939cc38063087787969debc91ad7478236ec20.zip
Driver: Handle -f{no-}honor-infinities, -f{no-}honor-nans, and
-ffinite-math-only. - No test case yet, I don't know how to construct a situation where this matters. llvm-svn: 146297
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 2de9e8068c7..0fd0a5aff75 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -183,6 +183,10 @@ static void CodeGenOptsToArgs(const CodeGenOptions &Opts,
Res.push_back("-main-file-name");
Res.push_back(Opts.MainFileName);
}
+ if (Opts.NoInfsFPMath)
+ Res.push_back("-menable-no-infinities");
+ if (Opts.NoNaNsFPMath)
+ Res.push_back("-menable-no-nans");
// SimplifyLibCalls is only derived.
// TimePasses is only derived.
// UnitAtATime is unused.
@@ -1083,8 +1087,12 @@ static void ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
Opts.HiddenWeakVTables = Args.hasArg(OPT_fhidden_weak_vtables);
Opts.LessPreciseFPMAD = Args.hasArg(OPT_cl_mad_enable);
Opts.LimitFloatPrecision = Args.getLastArgValue(OPT_mlimit_float_precision);
- Opts.NoInfsFPMath = Opts.NoNaNsFPMath = Args.hasArg(OPT_cl_finite_math_only)||
- Args.hasArg(OPT_cl_fast_relaxed_math);
+ Opts.NoInfsFPMath = (Args.hasArg(OPT_menable_no_infinities) ||
+ Args.hasArg(OPT_cl_finite_math_only)||
+ Args.hasArg(OPT_cl_fast_relaxed_math));
+ Opts.NoNaNsFPMath = (Args.hasArg(OPT_menable_no_nans) ||
+ Args.hasArg(OPT_cl_finite_math_only)||
+ Args.hasArg(OPT_cl_fast_relaxed_math));
Opts.NoZeroInitializedInBSS = Args.hasArg(OPT_mno_zero_initialized_in_bss);
Opts.BackendOptions = Args.getAllArgValues(OPT_backend_option);
Opts.NumRegisterParameters = Args.getLastArgIntValue(OPT_mregparm, 0, Diags);
OpenPOWER on IntegriCloud