llvm::SCEVExpander Class Reference

#include <ScalarEvolutionExpander.h>

Inheritance diagram for llvm::SCEVExpander:

llvm::SCEVVisitor< SCEVExpander, Value * >

List of all members.

Public Member Functions

 SCEVExpander (ScalarEvolution &se)
 SCEVExpander - Construct a SCEVExpander in "canonical" mode.
void clear ()
Value * getOrInsertCanonicalInductionVariable (const Loop *L, const Type *Ty)
Value * expandCodeFor (const SCEV *SH, const Type *Ty, Instruction *I)
void setIVIncInsertPos (const Loop *L, Instruction *Pos)
 setIVIncInsertPos - Set the current IV increment loop and position.
void setPostInc (const Loop *L)
void disableCanonicalMode ()

Friends

struct SCEVVisitor< SCEVExpander, Value * >


Detailed Description

SCEVExpander - This class uses information about analyze scalars to rewrite expressions in canonical form.

Clients should create an instance of this class when rewriting is needed, and destroy it when finished to allow the release of the associated memory.


Member Function Documentation

void llvm::SCEVExpander::clear (  )  [inline]

clear - Erase the contents of the InsertedExpressions map so that users trying to expand the same expression into multiple BasicBlocks or different places within the same BasicBlock can do so.

void llvm::SCEVExpander::disableCanonicalMode (  )  [inline]

disableCanonicalMode - Disable the behavior of expanding expressions in canonical form rather than in a more literal form. Non-canonical mode is useful for late optimization passes.

Value* llvm::SCEVExpander::expandCodeFor ( const SCEV SH,
const Type *  Ty,
Instruction *  I 
) [inline]

expandCodeFor - Insert code to directly compute the specified SCEV expression into the program. The inserted code is inserted into the specified block.

Value* llvm::SCEVExpander::getOrInsertCanonicalInductionVariable ( const Loop *  L,
const Type *  Ty 
)

getOrInsertCanonicalInductionVariable - This method returns the canonical induction variable of the specified type for the specified loop (inserting one if there is none). A canonical induction variable starts at zero and steps by one on each iteration.

void llvm::SCEVExpander::setPostInc ( const Loop *  L  )  [inline]

setPostInc - If L is non-null, enable post-inc expansion for addrecs referring to the given loop. If L is null, disable post-inc expansion completely. Post-inc expansion is only supported in non-canonical mode.


The documentation for this class was generated from the following file:

Generated on Fri Mar 19 01:41:25 2010 by  doxygen 1.5.8