Remove attribution from file headers, per discussion on llvmdev.
[oota-llvm.git] / lib / Target / TargetMachine.cpp
index 7f5ad587211dcd67d5caaf78e2e83be57503e969..15164ca28dfc0a59f82bf593b9b74cc4670ff0f9 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -27,11 +27,13 @@ namespace llvm {
   bool NoExcessFPPrecision;
   bool UnsafeFPMath;
   bool FiniteOnlyFPMathOption;
+  bool HonorSignDependentRoundingFPMathOption;
   bool UseSoftFloat;
   bool NoZerosInBSS;
   bool ExceptionHandling;
   Reloc::Model RelocationModel;
   CodeModel::Model CMModel;
+  bool PerformTailCallOpt;
 }
 namespace {
   cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -54,20 +56,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."),
@@ -93,7 +102,7 @@ namespace {
   cl::opt<llvm::CodeModel::Model, true>
   DefCodeModel(
     "code-model",
-    cl::desc("Choose relocation model"),
+    cl::desc("Choose code model"),
     cl::location(CMModel),
     cl::init(CodeModel::Default),
     cl::values(
@@ -108,6 +117,12 @@ namespace {
       clEnumValN(CodeModel::Large, "large",
                  "  Large code model"),
       clEnumValEnd));
+
+  cl::opt<bool, true>
+  EnablePerformTailCallOpt("tailcallopt",
+                           cl::desc("Turn on tail call optimization."),
+                           cl::location(PerformTailCallOpt),
+                           cl::init(false));
 }
 
 //---------------------------------------------------------------------------
@@ -146,5 +161,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;
+  }
 }