forked from OSchip/llvm-project
This file provides the function DemoteRegToStack(), which takes a
virtual register computed by an Instruction& X and replaces it with a slot in the stack frame, allocated via alloca. llvm-svn: 4963
This commit is contained in:
parent
9a672d17ae
commit
5fb974b74a
|
@ -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);
|
Loading…
Reference in New Issue