diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-05-23 06:39:12 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-05-23 06:39:12 +0000 |
commit | 95942d76f4fdd1191febf1aa2b612fce6351ab3b (patch) | |
tree | 7276d8cbd20058d1b7225a4da19c59afb211bcbc | |
parent | 4b442b528a50ef06cd75f0e7c41ad57426175bcc (diff) |
Added option -enable-finite-only-fp-math. When on, the codegen can assume that
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
-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", |