From: Chris Lattner Date: Thu, 1 Nov 2001 02:41:52 +0000 (+0000) Subject: Initial checkin of level raising code X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d3f9a98f6672e270c7db5d97f67ae38f1739f210;p=oota-llvm.git Initial checkin of level raising code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1073 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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