Add the llvm.frameallocate and llvm.recoverframeallocation intrinsics
authorReid Kleckner <reid@kleckner.net>
Tue, 13 Jan 2015 00:48:10 +0000 (00:48 +0000)
committerReid Kleckner <reid@kleckner.net>
Tue, 13 Jan 2015 00:48:10 +0000 (00:48 +0000)
commit221a7075cf53c6ed04acd97f05fbeba8bd886080
treed25887fc2e5589e4a83551e5512c581250c0563d
parent698be08c841091c73ca7c1c6ead1c3027e9f5169
Add the llvm.frameallocate and llvm.recoverframeallocation intrinsics

These intrinsics allow multiple functions to share a single stack
allocation from one function's call frame. The function with the
allocation may only perform one allocation, and it must be in the entry
block.

Functions accessing the allocation call llvm.recoverframeallocation with
the function whose frame they are accessing and a frame pointer from an
active call frame of that function.

These intrinsics are very difficult to inline correctly, so the
intention is that they be introduced rarely, or at least very late
during EH preparation.

Reviewers: echristo, andrew.w.kaylor

Differential Revision: http://reviews.llvm.org/D6493

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225746 91177308-0d34-0410-b5e6-96231b3b80d8
21 files changed:
docs/LangRef.rst
include/llvm/CodeGen/AsmPrinter.h
include/llvm/CodeGen/ISDOpcodes.h
include/llvm/CodeGen/MachineFrameInfo.h
include/llvm/IR/Intrinsics.td
include/llvm/MC/MCContext.h
include/llvm/Target/Target.td
include/llvm/Target/TargetFrameLowering.h
include/llvm/Target/TargetOpcodes.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/DeadMachineInstructionElim.cpp
lib/CodeGen/MachineFunction.cpp
lib/CodeGen/PrologEpilogInserter.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/IR/Verifier.cpp
lib/MC/MCContext.cpp
lib/Target/X86/X86InstrCompiler.td
lib/Target/X86/X86InstrInfo.td
test/CodeGen/X86/frameallocate.ll [new file with mode: 0644]
test/Verifier/frameallocate.ll [new file with mode: 0644]
utils/TableGen/CodeGenTarget.cpp