diff options
Diffstat (limited to 'include/llvm/Transforms/Utils/DemoteRegToStack.h')
-rw-r--r-- | include/llvm/Transforms/Utils/DemoteRegToStack.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/llvm/Transforms/Utils/DemoteRegToStack.h b/include/llvm/Transforms/Utils/DemoteRegToStack.h new file mode 100644 index 0000000000..915a19f112 --- /dev/null +++ b/include/llvm/Transforms/Utils/DemoteRegToStack.h @@ -0,0 +1,21 @@ +//===- DemoteRegToStack.h - Move a virtual reg. to stack --------*- C++ -*-===// +// This file provides the function: +// AllocaInst* DemoteRegToStack(Instruction& X): +// +// This function takes a virtual register computed by an +// Instruction& X and replaces it with a slot in the stack frame, +// allocated via alloca. It has to: +// (1) Identify all Phi operations that have X as an operand and +// transitively other Phis that use such Phis; +// (2) Store all values merged with X via Phi operations to the stack slot; +// (3) Load the value from the stack slot just before any use of X or any +// of the Phis that were eliminated; and +// (4) Delete X and all the Phis, which should all now be dead. +// +// Returns the pointer to the alloca inserted to create a stack slot for X. +//---------------------------------------------------------------------------- + +class Instruction; +class AllocaInst; + +extern AllocaInst* DemoteRegToStack(Instruction& X); |