From 4e4759adc00c9c965db3264dac18cb65b0b0a348 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 1 Nov 2001 02:41:52 +0000 Subject: [PATCH] Initial checkin of level raising code llvm-svn: 1073 --- .../llvm/Transforms/RaisePointerReferences.h | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 include/llvm/Transforms/RaisePointerReferences.h diff --git a/include/llvm/Transforms/RaisePointerReferences.h b/include/llvm/Transforms/RaisePointerReferences.h new file mode 100644 index 00000000000..593ccf2496b --- /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