Refactor the implementation of the TargetOptions out of TargetMachine, taking
authorNick Lewycky <nicholas@mxc.ca>
Sat, 10 Dec 2011 22:34:41 +0000 (22:34 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sat, 10 Dec 2011 22:34:41 +0000 (22:34 +0000)
the only parts of TM that depends on CodeGen headers with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146334 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CMakeLists.txt
lib/Target/TargetMachine.cpp
lib/Target/TargetOptions.cpp [new file with mode: 0644]

index cc2462551e113546f192b5c2d781f2760c6453b2..28f1ebbdabd7131cee965b412a80f4501a12c1a3 100644 (file)
@@ -9,6 +9,7 @@ add_llvm_library(LLVMTarget
   TargetLibraryInfo.cpp
   TargetLoweringObjectFile.cpp
   TargetMachine.cpp
+  TargetOptions.cpp
   TargetRegisterInfo.cpp
   TargetSubtargetInfo.cpp
   )
index 80cc5fa75f96a0adaca7a0b8bc3cea1381a189fe..c7656fe7a09c89638ae4330c2eb4f43eac30793b 100644 (file)
@@ -109,36 +109,3 @@ void TargetMachine::setDataSections(bool V) {
   DataSections = V;
 }
 
-/// DisableFramePointerElim - This returns true if frame pointer elimination
-/// optimization should be disabled for the given machine function.
-bool TargetOptions::DisableFramePointerElim(const MachineFunction &MF) const {
-  // Check to see if we should eliminate non-leaf frame pointers and then
-  // check to see if we should eliminate all frame pointers.
-  if (NoFramePointerElimNonLeaf && !NoFramePointerElim) {
-    const MachineFrameInfo *MFI = MF.getFrameInfo();
-    return MFI->hasCalls();
-  }
-
-  return NoFramePointerElim;
-}
-
-/// LessPreciseFPMAD - This flag return true when -enable-fp-mad option
-/// is specified on the command line.  When this flag is off(default), the
-/// code generator is not allowed to generate mad (multiply add) if the
-/// result is "less precise" than doing those operations individually.
-bool TargetOptions::LessPreciseFPMAD() const {
-  return UnsafeFPMath || LessPreciseFPMADOption;
-}
-
-/// HonorSignDependentRoundingFPMath - Return true if the codegen must assume
-/// that the rounding mode of the FPU can change from its default.
-bool TargetOptions::HonorSignDependentRoundingFPMath() const {
-  return !UnsafeFPMath && HonorSignDependentRoundingFPMathOption;
-}
-
-/// getTrapFunctionName - If this returns a non-empty string, this means isel
-/// should lower Intrinsic::trap to a call to the specified function name
-/// instead of an ISD::TRAP node.
-StringRef TargetOptions::getTrapFunctionName() const {
-  return TrapFuncName;
-}
diff --git a/lib/Target/TargetOptions.cpp b/lib/Target/TargetOptions.cpp
new file mode 100644 (file)
index 0000000..5d7c1b7
--- /dev/null
@@ -0,0 +1,52 @@
+//===-- TargetOptions.cpp - Options that apply to all targets --------------==//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the methods in the TargetOptions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
+#include "llvm/Target/TargetOptions.h"
+using namespace llvm;
+
+/// DisableFramePointerElim - This returns true if frame pointer elimination
+/// optimization should be disabled for the given machine function.
+bool TargetOptions::DisableFramePointerElim(const MachineFunction &MF) const {
+  // Check to see if we should eliminate non-leaf frame pointers and then
+  // check to see if we should eliminate all frame pointers.
+  if (NoFramePointerElimNonLeaf && !NoFramePointerElim) {
+    const MachineFrameInfo *MFI = MF.getFrameInfo();
+    return MFI->hasCalls();
+  }
+
+  return NoFramePointerElim;
+}
+
+/// LessPreciseFPMAD - This flag return true when -enable-fp-mad option
+/// is specified on the command line.  When this flag is off(default), the
+/// code generator is not allowed to generate mad (multiply add) if the
+/// result is "less precise" than doing those operations individually.
+bool TargetOptions::LessPreciseFPMAD() const {
+  return UnsafeFPMath || LessPreciseFPMADOption;
+}
+
+/// HonorSignDependentRoundingFPMath - Return true if the codegen must assume
+/// that the rounding mode of the FPU can change from its default.
+bool TargetOptions::HonorSignDependentRoundingFPMath() const {
+  return !UnsafeFPMath && HonorSignDependentRoundingFPMathOption;
+}
+
+/// getTrapFunctionName - If this returns a non-empty string, this means isel
+/// should lower Intrinsic::trap to a call to the specified function name
+/// instead of an ISD::TRAP node.
+StringRef TargetOptions::getTrapFunctionName() const {
+  return TrapFuncName;
+}
+