diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-08-30 19:39:58 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-08-30 19:39:58 +0000 |
commit | c21742112b4b06bf2fd368ece71d27996d13408b (patch) | |
tree | a28ab83c1602161c91d87a32a2950cff0934cae3 /llvm/lib/CodeGen | |
parent | ddc0f8779e8aaf4ec6b4a2eef2b2892ea05c454d (diff) | |
download | bcm5719-llvm-c21742112b4b06bf2fd368ece71d27996d13408b.tar.gz bcm5719-llvm-c21742112b4b06bf2fd368ece71d27996d13408b.zip |
Emit segmented-stack specific code into function prologues for
X86. Modify the pass added in the previous patch to call this new
code.
This new prologues generated will call a libgcc routine (__morestack)
to allocate more stack space from the heap when required
Patch by Sanjoy Das.
llvm-svn: 138812
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/PrologEpilogInserter.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp index 7e5d804f913..ec5fe25704a 100644 --- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp +++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp @@ -29,6 +29,7 @@ #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/RegisterScavenging.h" #include "llvm/Target/TargetMachine.h" +#include "llvm/Target/TargetOptions.h" #include "llvm/Target/TargetRegisterInfo.h" #include "llvm/Target/TargetFrameLowering.h" #include "llvm/Target/TargetInstrInfo.h" @@ -699,6 +700,13 @@ void PEI::insertPrologEpilogCode(MachineFunction &Fn) { if (!I->empty() && I->back().getDesc().isReturn()) TFI.emitEpilogue(Fn, *I); } + + // Emit additional code that is required support segmented stacks, if we've + // been asked for it. This, when linked with a runtime with support for + // segmented stacks (libgcc is one), will result allocating stack space in + // small chunks instead of one large contiguous block. + if (EnableSegmentedStacks) + TFI.adjustForSegmentedStacks(Fn); } /// replaceFrameIndices - Replace all MO_FrameIndex operands with physical |