aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/Passes.h
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-08-14 00:15:52 +0000
committerJim Grosbach <grosbach@apple.com>2010-08-14 00:15:52 +0000
commitf0b7b5f0d6afdcac071356692a80ab17488ae2ff (patch)
tree5290b81ee70c16285532ecc8ce5e4b5bac3ee87f /include/llvm/CodeGen/Passes.h
parent6ab8bc1829c9d24dc8f8672a736c6dabbdaf493d (diff)
downloadexternal_llvm-f0b7b5f0d6afdcac071356692a80ab17488ae2ff.zip
external_llvm-f0b7b5f0d6afdcac071356692a80ab17488ae2ff.tar.gz
external_llvm-f0b7b5f0d6afdcac071356692a80ab17488ae2ff.tar.bz2
Add a local stack object block allocation pass. This is still an
experimental pass that allocates locals relative to one another before register allocation and then assigns them to actual stack slots as a block later in PEI. This will eventually allow targets with limited index offset range to allocate additional base registers (not just FP and SP) to more efficiently reference locals, as well as handle situations where locals cannot be referenced via SP or FP at all (dynamic stack realignment together with variable sized objects, for example). It's currently incomplete and almost certainly buggy. Work in progress. Disabled by default and gated via the -enable-local-stack-alloc command line option. rdar://8277890 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111059 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/Passes.h')
-rw-r--r--include/llvm/CodeGen/Passes.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h
index 3e6b3e1..0fa498a 100644
--- a/include/llvm/CodeGen/Passes.h
+++ b/include/llvm/CodeGen/Passes.h
@@ -198,6 +198,13 @@ namespace llvm {
/// the GCC-style builtin setjmp/longjmp (sjlj) to handling EH control flow.
FunctionPass *createSjLjEHPass(const TargetLowering *tli);
+ /// createLocalStackSlotAllocationPass - This pass assigns local frame
+ /// indices to stack slots relative to one another and allocates
+ /// base registers to access them when it is estimated by the target to
+ /// be out of range of normal frame pointer or stack pointer index
+ /// addressing.
+ FunctionPass *createLocalStackSlotAllocationPass();
+
} // End llvm namespace
#endif