Provide option for enabling-disabling stack realignment
authorAnton Korobeynikov <asl@math.spbu.ru>
Wed, 23 Apr 2008 18:17:11 +0000 (18:17 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Wed, 23 Apr 2008 18:17:11 +0000 (18:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50156 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86RegisterInfo.cpp

index 9059a4e65e7ef3728dcb910fc91d83dfb6a08089..f923aef60d13b9bdc32f179da2afb7cff81cc9f5 100644 (file)
@@ -29,6 +29,7 @@
 #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),
@@ -269,8 +274,9 @@ bool X86RegisterInfo::needsStackRealignment(const MachineFunction &MF) const {
 
   // FIXME: Currently we don't support stack realignment for functions with
   // variable-sized allocas
-  return (MFI->getMaxAlignment() > StackAlign &&
-          !MFI->hasVarSizedObjects());
+  return (RealignStack &&
+          (MFI->getMaxAlignment() > StackAlign &&
+           !MFI->hasVarSizedObjects()));
 }
 
 bool X86RegisterInfo::hasReservedCallFrame(MachineFunction &MF) const {