diff options
author | Chris Lattner <sabre@nondot.org> | 2007-05-03 00:16:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-05-03 00:16:07 +0000 |
commit | aa4f1e164bb9a0fe438c262f40857ca639b56fad (patch) | |
tree | e7ca7b383f3ffd24952aa02b854ff2f6e48b3bad | |
parent | ddd35321fb756f329f0d4fedcec7cac1acf04cb6 (diff) | |
download | llvm-aa4f1e164bb9a0fe438c262f40857ca639b56fad.tar.gz llvm-aa4f1e164bb9a0fe438c262f40857ca639b56fad.tar.bz2 llvm-aa4f1e164bb9a0fe438c262f40857ca639b56fad.tar.xz |
Add a new option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36657 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Target/TargetOptions.h | 16 | ||||
-rw-r--r-- | lib/Target/TargetMachine.cpp | 21 |
2 files changed, 33 insertions, 4 deletions
diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h index fcf2aa15bb..288da94ec4 100644 --- a/include/llvm/Target/TargetOptions.h +++ b/include/llvm/Target/TargetOptions.h @@ -49,6 +49,22 @@ namespace llvm { extern bool FiniteOnlyFPMathOption; extern bool FiniteOnlyFPMath(); + /// HonorSignDependentRoundingFPMath - This returns true when the + /// -enable-sign-dependent-rounding-fp-math is specified. If this returns + /// false (the default), the code generator is allowed to assume that the + /// rounding behavior is the default (round-to-zero for all floating point to + /// integer conversions, and round-to-nearest for all other arithmetic + /// truncations). If this is enabled (set to true), the code generator must + /// assume that the rounding mode may dynamically change. + extern bool HonorSignDependentRoundingFPMathOption; + extern bool HonorSignDependentRoundingFPMath(); + + /// option is specified on the command line. If this returns false (default), + /// the code generator is not allowed to assume that FP arithmetic arguments + /// and results are never NaNs or +-Infs. + extern bool FiniteOnlyFPMathOption; + extern bool FiniteOnlyFPMath(); + /// UseSoftFloat - This flag is enabled when the -soft-float flag is specified /// on the command line. When this flag is on, the code generator will /// generate libcalls to the software floating point library instead of diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 4e7048253a..b79b87b479 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -54,20 +54,27 @@ namespace { cl::location(UnsafeFPMath), cl::init(false)); cl::opt<bool, true> - EnableFiniteOnltFPMath("enable-finite-only-fp-math", + EnableFiniteOnlyFPMath("enable-finite-only-fp-math", cl::desc("Enable optimizations that assumes non- NaNs / +-Infs"), cl::location(FiniteOnlyFPMathOption), cl::init(false)); cl::opt<bool, true> + EnableHonorSignDependentRoundingFPMath(cl::Hidden, + "enable-sign-dependent-rounding-fp-math", + cl::desc("Force codegen to assume rounding mode can change dynamically"), + cl::location(HonorSignDependentRoundingFPMathOption), + cl::init(false)); + + cl::opt<bool, true> GenerateSoftFloatCalls("soft-float", cl::desc("Generate software floating point library calls"), cl::location(UseSoftFloat), cl::init(false)); cl::opt<bool, true> DontPlaceZerosInBSS("nozero-initialized-in-bss", - cl::desc("Don't place zero-initialized symbols into bss section"), - cl::location(NoZerosInBSS), - cl::init(false)); + cl::desc("Don't place zero-initialized symbols into bss section"), + cl::location(NoZerosInBSS), + cl::init(false)); cl::opt<bool, true> EnableExceptionHandling("enable-eh", cl::desc("Exception handling should be emitted."), @@ -146,5 +153,11 @@ namespace llvm { /// the code generator is not allowed to assume that FP arithmetic arguments /// and results are never NaNs or +-Infs. bool FiniteOnlyFPMath() { return UnsafeFPMath || FiniteOnlyFPMathOption; } + + /// HonorSignDependentRoundingFPMath - Return true if the codegen must assume + /// that the rounding mode of the FPU can change from its default. + bool HonorSignDependentRoundingFPMath() { + return !UnsafeFPMath && HonorSignDependentRoundingFPMathOption; + } } |