LLVM  8.0.1
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/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"
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 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, trueVerifyLoopLCSSAFlag ("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
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "lcssa"

Definition at line 52 of file LCSSA.cpp.

Function Documentation

◆ computeBlocksDominatingExits()

static void computeBlocksDominatingExits ( Loop L,
DominatorTree DT,
SmallVector< BasicBlock *, 8 > &  ExitBlocks,
SmallSetVector< BasicBlock *, 8 > &  BlocksDominatingExits 
)
static

◆ formLCSSAOnAllLoops()

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

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( LCSSAWrapperPass  ,
"lcssa"  ,
"Loop-Closed SSA Form Pass ,
false  ,
false   
)

Referenced by formLCSSAOnAllLoops().

◆ isExitBlock()

static bool isExitBlock ( BasicBlock BB,
const SmallVectorImpl< BasicBlock *> &  ExitBlocks 
)
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()

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

Variable Documentation

◆ false

Loop Closed SSA Form false

Definition at line 436 of file LCSSA.cpp.

◆ lcssa

lcssa

Definition at line 436 of file LCSSA.cpp.

◆ Pass

Loop Closed SSA Form Pass

Definition at line 436 of file LCSSA.cpp.

◆ VerifyLoopLCSSA

bool VerifyLoopLCSSA = false
static

Definition at line 59 of file LCSSA.cpp.

◆ VerifyLoopLCSSAFlag

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