aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-01-15 06:00:32 +0000
committerChris Lattner <sabre@nondot.org>2005-01-15 06:00:32 +0000
commit45554a61f2814e1d445e272076fd7187e74a25c0 (patch)
tree140ad07f9cf4a7fef6ca3c633ad62cd6b688d12c
parente9ef81dd2f9f51ac80bc000cca67051020a1e227 (diff)
Add a new target-independent code generator flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19567 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Target/TargetOptions.h9
-rw-r--r--lib/Target/TargetMachine.cpp6
2 files changed, 15 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h
index b3668e2a1b..887e404f74 100644
--- a/include/llvm/Target/TargetOptions.h
+++ b/include/llvm/Target/TargetOptions.h
@@ -25,6 +25,15 @@ namespace llvm {
/// specified on the command line. If the target supports the frame pointer
/// elimination optimization, this option should disable it.
extern bool NoFramePointerElim;
+
+ /// NoExcessFPPrecision - This flag is enabled when the
+ /// -disable-excess-fp-precision flag is specified on the command line. When
+ /// this flag is off (the default), the code generator is allowed to produce
+ /// results that are "more precise" than IEEE allows. This includes use of
+ /// FMA-like operations and use of the X86 FP registers without rounding all
+ /// over the place.
+ extern bool NoExcessFPPrecision;
+
} // End llvm namespace
#endif
diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp
index 973165f186..22df91faeb 100644
--- a/lib/Target/TargetMachine.cpp
+++ b/lib/Target/TargetMachine.cpp
@@ -24,6 +24,7 @@ using namespace llvm;
namespace llvm {
bool PrintMachineCode;
bool NoFramePointerElim;
+ bool NoExcessFPPrecision;
};
namespace {
cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -35,6 +36,11 @@ namespace {
cl::desc("Disable frame pointer elimination optimization"),
cl::location(NoFramePointerElim),
cl::init(false));
+ cl::opt<bool, true>
+ DisableExcessPrecision("disable-excess-fp-precision",
+ cl::desc("Disable optimizations that may increase FP precision"),
+ cl::location(NoExcessFPPrecision),
+ cl::init(false));
};
//---------------------------------------------------------------------------