From 34f74a6162f1e493a9773e83a684cf31fa4838de Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 30 Apr 2005 04:09:52 +0000 Subject: [PATCH] Expose an option allowing unsafe math optimizations. Patch contributed by Morten Ofstad! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21630 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetOptions.h | 6 ++++++ lib/Target/TargetMachine.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h index 19b83d5eefd..0018377c0f6 100644 --- a/include/llvm/Target/TargetOptions.h +++ b/include/llvm/Target/TargetOptions.h @@ -41,6 +41,12 @@ namespace llvm { /// pattern ISel if available. extern int PatternISelTriState; + /// UnsafeFPMath - This flag is enabled when the + /// -enable-unsafe-fp-math flag is specified on the command line. When + /// this flag is off (the default), the code generator is not allowed to + /// 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; } // End llvm namespace #endif diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 8e965767ce9..b6bab729763 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -26,6 +26,7 @@ namespace llvm { bool NoFramePointerElim; bool NoExcessFPPrecision; int PatternISelTriState; + bool UnsafeFPMath; }; namespace { cl::opt PrintCode("print-machineinstrs", @@ -46,6 +47,11 @@ namespace { cl::desc("sets the pattern ISel off(0), on(1), default(2)"), cl::location(PatternISelTriState), cl::init(2)); + cl::opt + EnableUnsafeFPMath("enable-unsafe-fp-math", + cl::desc("Enable optimizations that may decrease FP precision"), + cl::location(UnsafeFPMath), + cl::init(false)); }; //---------------------------------------------------------------------------