|
LLVM
3.7.0
|
#include "llvm/Transforms/Scalar.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/LoopPass.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/PredIteratorCache.h"#include "llvm/Pass.h"#include "llvm/Transforms/Utils/LoopUtils.h"#include "llvm/Transforms/Utils/SSAUpdater.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "lcssa" |
Functions | |
| STATISTIC (NumLCSSA,"Number of live out of a loop variables") | |
| static bool | isExitBlock (BasicBlock *BB, const SmallVectorImpl< BasicBlock * > &ExitBlocks) |
| Return true if the specified block is in the list. More... | |
| static bool | processInstruction (Loop &L, Instruction &Inst, DominatorTree &DT, const SmallVectorImpl< BasicBlock * > &ExitBlocks, PredIteratorCache &PredCache, LoopInfo *LI) |
| Given an instruction in the loop, check to see if it has any uses that are outside the current loop. More... | |
| static bool | blockDominatesAnExit (BasicBlock *BB, DominatorTree &DT, const SmallVectorImpl< BasicBlock * > &ExitBlocks) |
| Return true if the specified block dominates at least one of the blocks in the specified list. More... | |
|
static |
Return true if the specified block dominates at least one of the blocks in the specified list.
Definition at line 204 of file LCSSA.cpp.
References llvm::DominatorTree::dominates(), llvm::DominatorTreeBase< N >::getNode(), and llvm::SmallVectorTemplateCommon< T >::size().
Referenced by llvm::formLCSSA().
|
static |
Return true if the specified block is in the list.
Definition at line 51 of file LCSSA.cpp.
References llvm::SmallVectorTemplateCommon< T >::size().
Referenced by processInstruction().
|
static |
Given an instruction in the loop, check to see if it has any uses that are outside the current loop.
If so, insert LCSSA PHI nodes and rewrite the uses.
Definition at line 62 of file LCSSA.cpp.
References llvm::SSAUpdater::AddAvailableValue(), llvm::PHINode::addIncoming(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::BasicBlock::begin(), llvm::LoopBase< N, M >::contains(), llvm::PHINode::Create(), llvm::DominatorTree::dominates(), llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::PredIteratorCache::get(), llvm::LoopBase< N, M >::getExitBlocks(), llvm::LoopInfoBase< N, M >::getLoopFor(), llvm::Value::getName(), llvm::DominatorTreeBase< N >::getNode(), llvm::PHINode::getNumIncomingValues(), llvm::PHINode::getOperandNumForIncomingValue(), llvm::User::getOperandUse(), llvm::Instruction::getParent(), llvm::Value::getType(), llvm::SSAUpdater::HasValueForBlock(), I, llvm::SSAUpdater::Initialize(), isExitBlock(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SSAUpdater::RewriteUse(), llvm::PredIteratorCache::size(), llvm::SmallVectorTemplateCommon< T >::size(), llvm::Value::uses(), and llvm::ValueHandleBase::ValueIsRAUWd().
Referenced by llvm::formLCSSA().
| STATISTIC | ( | NumLCSSA | , |
| "Number of live out of a loop variables" | |||
| ) |
1.8.6