aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/Passes.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/CodeGen/Passes.h')
-rw-r--r--include/llvm/CodeGen/Passes.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h
new file mode 100644
index 0000000000..9057fd0268
--- /dev/null
+++ b/include/llvm/CodeGen/Passes.h
@@ -0,0 +1,38 @@
+//===-- Passes.h - Target independant code generation passes ----*- C++ -*-===//
+//
+// This file defines interfaces to access the target independant code generation
+// passes provided by the LLVM backend.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_PASSES_H
+#define LLVM_CODEGEN_PASSES_H
+
+class Pass;
+class PassInfo;
+
+// PHIElimination pass - This pass eliminates machine instruction PHI nodes by
+// inserting copy instructions. This destroys SSA information, but is the
+// desired input for some register allocators. This pass is "required" by these
+// register allocator like this: AU.addRequiredID(PHIEliminationID);
+//
+extern const PassInfo *PHIEliminationID;
+
+/// SimpleRegisterAllocation Pass - This pass converts the input machine code
+/// from SSA form to use explicit registers by spilling every register. Wow,
+/// great policy huh?
+///
+Pass *createSimpleRegisterAllocator();
+
+/// LocalRegisterAllocation Pass - This pass register allocates the input code a
+/// basic block at a time, yielding code better than the simple register
+/// allocator, but not as good as a global allocator.
+///
+Pass *createLocalRegisterAllocator();
+
+/// PrologEpilogCodeInserter Pass - This pass inserts prolog and epilog code,
+/// and eliminates abstract frame references.
+///
+Pass *createPrologEpilogCodeInserter();
+
+#endif