aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Transforms/RaisePointerReferences.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/include/llvm/Transforms/RaisePointerReferences.h b/include/llvm/Transforms/RaisePointerReferences.h
new file mode 100644
index 0000000..593ccf2
--- /dev/null
+++ b/include/llvm/Transforms/RaisePointerReferences.h
@@ -0,0 +1,35 @@
+//===-- LevelChange.h - Passes for raising/lowering llvm code ----*- C++ -*--=//
+//
+// This family of passes is useful for changing the 'level' of a module. This
+// can either be raising (f.e. converting direct addressing to use getelementptr
+// for structs and arrays), or lowering (for instruction selection).
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_LEVELCHANGE_H
+#define LLVM_TRANSFORMS_LEVELCHANGE_H
+
+#include "llvm/Pass.h"
+
+// RaisePointerReferences - Try to eliminate as many pointer arithmetic
+// expressions as possible, by converting expressions to use getelementptr and
+// friends.
+//
+struct RaisePointerReferences : public Pass {
+ static bool doit(Method *M);
+
+ virtual bool doPerMethodWork(Method *M) { return doit(M); }
+};
+
+
+// EliminateAuxillaryInductionVariables - Eliminate all aux indvars. This
+// converts all induction variables to reference a cannonical induction
+// variable (which starts at 0 and counts by 1).
+//
+struct EliminateAuxillaryInductionVariables : public Pass {
+ static bool doit(Method *M) { return false; } // TODO!
+
+ virtual bool doPerMethodWork(Method *M) { return doit(M); }
+};
+
+#endif