LLVM API Documentation
#include "llvm/Analysis/IVUsers.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "iv-users" |
Functions | |
INITIALIZE_PASS_BEGIN (IVUsers,"iv-users","Induction Variable Users", false, true) INITIALIZE_PASS_END(IVUsers | |
static bool | isInteresting (const SCEV *S, const Instruction *I, const Loop *L, ScalarEvolution *SE, LoopInfo *LI) |
static bool | isSimplifiedLoopNest (BasicBlock *BB, const DominatorTree *DT, const LoopInfo *LI, SmallPtrSetImpl< Loop * > &SimpleLoopNests) |
static const SCEVAddRecExpr * | findAddRecForLoop (const SCEV *S, const Loop *L) |
Variables | |
iv | users |
iv Induction Variable | Users |
iv Induction Variable | false |
#define DEBUG_TYPE "iv-users" |
Definition at line 31 of file IVUsers.cpp.
static const SCEVAddRecExpr* findAddRecForLoop | ( | const SCEV * | S, |
const Loop * | L | ||
) | [static] |
static bool isInteresting | ( | const SCEV * | S, |
const Instruction * | I, | ||
const Loop * | L, | ||
ScalarEvolution * | SE, | ||
LoopInfo * | LI | ||
) | [static] |
isInteresting - Test whether the given expression is "interesting" when used by the given expression, within the context of analyzing the given loop.
Definition at line 49 of file IVUsers.cpp.
References llvm::LoopBase< BlockT, LoopT >::contains(), llvm::LoopInfo::getLoopFor(), llvm::Instruction::getParent(), llvm::ScalarEvolution::getSCEVAtScope(), I, and LI.
Referenced by llvm::IVUsers::AddUsersImpl().
static bool isSimplifiedLoopNest | ( | BasicBlock * | BB, |
const DominatorTree * | DT, | ||
const LoopInfo * | LI, | ||
SmallPtrSetImpl< Loop * > & | SimpleLoopNests | ||
) | [static] |
Return true if all loop headers that dominate this block are in simplified form.
Definition at line 85 of file IVUsers.cpp.
References llvm::SmallPtrSetImpl< PtrType >::count(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::LoopInfo::getLoopFor(), llvm::DominatorTreeBase< NodeT >::getNode(), llvm::SmallPtrSetImpl< PtrType >::insert(), and llvm::Loop::isLoopSimplifyForm().
Referenced by llvm::IVUsers::AddUsersImpl().
iv Induction Variable false |
Definition at line 39 of file IVUsers.cpp.
iv users |
Definition at line 39 of file IVUsers.cpp.
iv Induction Variable Users |
Definition at line 39 of file IVUsers.cpp.
Referenced by computeOthers(), registerADRCandidate(), and llvm::InstCombiner::visitAllocSite().