diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-12-09 23:41:18 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-12-09 23:41:18 +0000 |
commit | 19939cc38063087787969debc91ad7478236ec20 (patch) | |
tree | f68e70d88f7ac3babb021d7c4c999ac6aa1a21a9 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 8be2f6577e147ea695b702ba71a1a349232849b1 (diff) | |
download | bcm5719-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.cpp | 12 |
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); |