LLVM
8.0.1
|
#include "llvm/Transforms/Utils/LCSSA.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/PredIteratorCache.h"
#include "llvm/Pass.h"
#include "llvm/Transforms/Utils.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 void | computeBlocksDominatingExits (Loop &L, DominatorTree &DT, SmallVector< BasicBlock *, 8 > &ExitBlocks, SmallSetVector< BasicBlock *, 8 > &BlocksDominatingExits) |
static bool | formLCSSAOnAllLoops (LoopInfo *LI, DominatorTree &DT, ScalarEvolution *SE) |
Process all loops in the function, inner-most out. More... | |
INITIALIZE_PASS_BEGIN (LCSSAWrapperPass, "lcssa", "Loop-Closed SSA Form Pass", false, false) INITIALIZE_PASS_END(LCSSAWrapperPass | |
Variables | |
static bool | VerifyLoopLCSSA = false |
static cl::opt< bool, true > | VerifyLoopLCSSAFlag ("verify-loop-lcssa", cl::location(VerifyLoopLCSSA), cl::Hidden, cl::desc("Verify loop lcssa form (time consuming)")) |
lcssa | |
Loop Closed SSA Form | Pass |
Loop Closed SSA Form | false |
|
static |
Definition at line 260 of file LCSSA.cpp.
References llvm::LoopBase< BlockT, LoopT >::contains(), llvm::SmallVectorBase::empty(), llvm::DomTreeNodeBase< NodeT >::getBlock(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::SetVector< T, SmallVector< T, N >, SmallDenseSet< T, N > >::insert(), llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T >::push_back().
Referenced by llvm::formLCSSA().
|
static |
Process all loops in the function, inner-most out.
Definition at line 373 of file LCSSA.cpp.
References llvm::AnalysisUsage::addPreserved(), llvm::AnalysisUsage::addPreservedID(), llvm::AnalysisUsage::addRequired(), llvm::all_of(), assert(), F(), llvm::formLCSSARecursively(), llvm::PassRegistry::getPassRegistry(), INITIALIZE_PASS_BEGIN(), INITIALIZE_PASS_DEPENDENCY, llvm::initializeLCSSAWrapperPassPass(), llvm::Loop::isRecursivelyLCSSAForm(), llvm::LoopSimplifyID, runOnFunction(), and llvm::AnalysisUsage::setPreservesCFG().
Referenced by llvm::LCSSAPass::run().
Referenced by formLCSSAOnAllLoops().
|
static |
Return true if the specified block is in the list.
Definition at line 67 of file LCSSA.cpp.
References llvm::is_contained().
Referenced by llvm::formLCSSAForInstructions(), and isCopyFeedingInvariantStore().
STATISTIC | ( | NumLCSSA | , |
"Number of live out of a loop variables" | |||
) |