FP arithmetic arguments and results are never NaNs or +=Infs. This includes
ignoring parity flag (PF) when checking for FP equality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28432
91177308-0d34-0410-b5e6-
96231b3b80d8
/// produce results that are "less precise" than IEEE allows. This includes
/// use of X86 instructions like FSIN and FCOS instead of libcalls.
extern bool UnsafeFPMath;
+
+ /// FiniteOnlyFPMath - This is enabled when the -enable-finite-only-fp-math
+ /// flag is specified on the command line. When this flag is off (default),
+ /// the code generator is not allowed to assume that FP arithmetic arguments
+ /// and results are never NaNs or +-Infs. This includes ignoring parity flag
+ /// (PF) when checking for FP equality.
+ extern bool FiniteOnlyFPMath;
} // End llvm namespace
#endif
bool NoFramePointerElim;
bool NoExcessFPPrecision;
bool UnsafeFPMath;
+ bool FiniteOnlyFPMath;
Reloc::Model RelocationModel;
};
namespace {
cl::desc("Enable optimizations that may decrease FP precision"),
cl::location(UnsafeFPMath),
cl::init(false));
+ cl::opt<bool, true>
+ EnableFiniteOnltFPMath("enable-finite-only-fp-math",
+ cl::desc("Enable optimizations that assumes non- NaNs / +-Infs"),
+ cl::location(FiniteOnlyFPMath),
+ cl::init(false));
cl::opt<llvm::Reloc::Model, true>
DefRelocationModel(
"relocation-model",