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/Driver/Tools.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/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9d8effb7108..f410848cc74 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1345,6 +1345,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, getToolChain().IsStrictAliasingDefault())) CmdArgs.push_back("-relaxed-aliasing"); + // Handle -f{no-}honor-infinities, -f{no-}honor-nans, and -ffinite-math-only. + bool HonorInfinities = Args.hasFlag(options::OPT_fhonor_infinities, + options::OPT_fno_honor_infinities); + bool HonorNaNs = Args.hasFlag(options::OPT_fhonor_nans, + options::OPT_fno_honor_nans); + if (Args.hasArg(options::OPT_ffinite_math_only)) + HonorInfinities = HonorNaNs = false; + if (!HonorInfinities) + CmdArgs.push_back("-menable-no-infs"); + if (!HonorNaNs) + CmdArgs.push_back("-menable-no-nans"); + // Decide whether to use verbose asm. Verbose assembly is the default on // toolchains which have the integrated assembler on by default. bool IsVerboseAsmDefault = getToolChain().IsIntegratedAssemblerDefault(); |