summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2002-12-10 13:07:12 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2002-12-10 13:07:12 +0000
commit1690f1d77d1a6a9016279df3a94dbbf68a4bd7a6 (patch)
treea6ada280da7de9bb7e93f24ba052cefa82460e83
parente12c74c07bec6d2570bb052a2e23c9e4dbf8c7f1 (diff)
downloadllvm-1690f1d77d1a6a9016279df3a94dbbf68a4bd7a6.tar.gz
llvm-1690f1d77d1a6a9016279df3a94dbbf68a4bd7a6.tar.bz2
llvm-1690f1d77d1a6a9016279df3a94dbbf68a4bd7a6.tar.xz
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4963 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Transforms/Utils/DemoteRegToStack.h21
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);