Make stack alignment options global for all targets
authorAnton Korobeynikov <asl@math.spbu.ru>
Wed, 23 Apr 2008 18:18:10 +0000 (18:18 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Wed, 23 Apr 2008 18:18:10 +0000 (18:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50157 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetOptions.h
lib/Target/TargetMachine.cpp
lib/Target/X86/X86RegisterInfo.cpp
lib/Target/X86/X86Subtarget.cpp

index 890263f043106cebd17296bd0924c142a3552899..ac3a6081edc38c32acba78363ea615b73bd291c1 100644 (file)
@@ -86,6 +86,13 @@ namespace llvm {
   /// OptimizeForSize - When this flag is set, the code generator avoids 
   /// optimizations that increase size.
   extern bool OptimizeForSize;
+
+  /// StackAlignment - Override default stack alignment for target.
+  extern unsigned StackAlignment;
+
+  /// RealignStack - This flag indicates, whether stack should be automatically
+  /// realigned, if needed.
+  extern bool RealignStack;
 } // End llvm namespace
 
 #endif
index c252368b1a3b4c9a940fa44cc5c26dd55423b5b1..4b3371d92a2d3e7f08656bbc7b61259cd340c2d4 100644 (file)
@@ -36,6 +36,8 @@ namespace llvm {
   CodeModel::Model CMModel;
   bool PerformTailCallOpt;
   bool OptimizeForSize;
+  bool RealignStack;
+  unsigned StackAlignment;
 }
 namespace {
   cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -135,6 +137,18 @@ namespace {
                         cl::desc("Optimize for size."),
                            cl::location(OptimizeForSize),
                            cl::init(false));
+
+  cl::opt<bool, true>
+  EnableRealignStack("realign-stack",
+                     cl::desc("Realign stack if needed"),
+                     cl::location(RealignStack),
+                     cl::init(true));
+
+  cl::opt<unsigned, true>
+  OverrideStackAlignment("stack-alignment",
+                         cl::desc("Override default stack alignment"),
+                         cl::location(StackAlignment),
+                         cl::init(0));
 }
 
 //---------------------------------------------------------------------------
index f923aef60d13b9bdc32f179da2afb7cff81cc9f5..563093bdec90dab62c3427ba4f6eebe30c346c02 100644 (file)
@@ -29,7 +29,6 @@
 #include "llvm/CodeGen/MachineLocation.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/MachineRegisterInfo.h"
-#include "llvm/Support/CommandLine.h"
 #include "llvm/Target/TargetAsmInfo.h"
 #include "llvm/Target/TargetFrameInfo.h"
 #include "llvm/Target/TargetInstrInfo.h"
 #include "llvm/ADT/STLExtras.h"
 using namespace llvm;
 
-static cl::opt<bool>
-RealignStack("realign-stack", cl::init(true),
-             cl::desc("Realign stack if needed"));
-
 X86RegisterInfo::X86RegisterInfo(X86TargetMachine &tm,
                                  const TargetInstrInfo &tii)
   : X86GenRegisterInfo(X86::ADJCALLSTACKDOWN, X86::ADJCALLSTACKUP),
index 71b5cb31f575dd584c83f6bde285b1b0699efe09..e0f350c5a1cfb571694970a04132795a165e42e7 100644 (file)
@@ -16,6 +16,7 @@
 #include "llvm/Module.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetOptions.h"
 using namespace llvm;
 
 cl::opt<X86Subtarget::AsmWriterFlavorTy>
@@ -26,10 +27,6 @@ AsmWriterFlavor("x86-asm-syntax", cl::init(X86Subtarget::Unset),
     clEnumValN(X86Subtarget::Intel, "intel", "  Emit Intel-style assembly"),
     clEnumValEnd));
 
-cl::opt<unsigned>
-StackAlignment("stack-alignment", cl::init(0),
-               cl::desc("Override default stack alignment"));
-
 
 /// True if accessing the GV requires an extra load. For Windows, dllimported
 /// symbols are indirect, loading the value at address GV rather then the