LLVM  4.0.0
Macros | Functions | Variables
LCSSA.cpp File Reference
#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/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/Scalar.h"
#include "llvm/Transforms/Utils/LoopUtils.h"
#include "llvm/Transforms/Utils/SSAUpdater.h"
Include dependency graph for LCSSA.cpp:

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 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 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, trueVerifyLoopLCSSAFlag ("verify-loop-lcssa", cl::location(VerifyLoopLCSSA), cl::desc("Verify loop lcssa form (time consuming)"))
 
 lcssa
 
Loop Closed SSA Form Pass
 
Loop Closed SSA Form false
 

Macro Definition Documentation

#define DEBUG_TYPE   "lcssa"

Definition at line 50 of file LCSSA.cpp.

Function Documentation

static bool blockDominatesAnExit ( BasicBlock BB,
DominatorTree DT,
const SmallVectorImpl< BasicBlock * > &  ExitBlocks 
)
static

Return true if the specified block dominates at least one of the blocks in the specified list.

Definition at line 243 of file LCSSA.cpp.

References llvm::any_of(), llvm::DominatorTree::dominates(), and llvm::DominatorTreeBase< N >::getNode().

Referenced by llvm::formLCSSA().

static bool formLCSSAOnAllLoops ( LoopInfo LI,
DominatorTree DT,
ScalarEvolution SE 
)
static

Process all loops in the function, inner-most out.

Definition at line 312 of file LCSSA.cpp.

References llvm::formLCSSARecursively(), and L.

Referenced by llvm::LCSSAPass::run().

INITIALIZE_PASS_BEGIN ( LCSSAWrapperPass  ,
"lcssa"  ,
"Loop-Closed SSA Form Pass ,
false  ,
false   
)
static bool isExitBlock ( BasicBlock BB,
const SmallVectorImpl< BasicBlock * > &  ExitBlocks 
)
static

Return true if the specified block is in the list.

Definition at line 64 of file LCSSA.cpp.

References llvm::is_contained().

Referenced by llvm::formLCSSAForInstructions().

STATISTIC ( NumLCSSA  ,
"Number of live out of a loop variables  
)

Variable Documentation

Loop Closed SSA Form false

Definition at line 375 of file LCSSA.cpp.

lcssa

Definition at line 375 of file LCSSA.cpp.

Loop Closed SSA Form Pass

Definition at line 375 of file LCSSA.cpp.

bool VerifyLoopLCSSA = false
static

Definition at line 57 of file LCSSA.cpp.

cl::opt<bool,true> VerifyLoopLCSSAFlag("verify-loop-lcssa", cl::location(VerifyLoopLCSSA), cl::desc("Verify loop lcssa form (time consuming)"))
static