diff options
-rw-r--r-- | include/llvm/Target/TargetOptions.h | 7 | ||||
-rw-r--r-- | lib/Target/TargetMachine.cpp | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h index e208eba641..2131ecaf3d 100644 --- a/include/llvm/Target/TargetOptions.h +++ b/include/llvm/Target/TargetOptions.h @@ -40,6 +40,13 @@ namespace llvm { /// 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 diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 24e1e5a547..28f3ae88a7 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -26,6 +26,7 @@ namespace llvm { bool NoFramePointerElim; bool NoExcessFPPrecision; bool UnsafeFPMath; + bool FiniteOnlyFPMath; Reloc::Model RelocationModel; }; namespace { @@ -48,6 +49,11 @@ 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", |