From 001f628a693960380e37c2b58a1009da77d7e425 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Fri, 9 Dec 2011 23:41:18 +0000 Subject: 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146297 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/Driver/Tools.cpp') diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 9d8effb710..f410848cc7 100644 --- a/lib/Driver/Tools.cpp +++ b/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(); -- cgit v1.2.3-70-g09d2