LLVM 19.0.0git
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/BranchProbabilityInfo.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/MemorySSA.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/PredIteratorCache.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.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.
 
static void computeBlocksDominatingExits (Loop &L, const DominatorTree &DT, SmallVector< BasicBlock *, 8 > &ExitBlocks, SmallSetVector< BasicBlock *, 8 > &BlocksDominatingExits)
 
static bool formLCSSAOnAllLoops (const LoopInfo *LI, const DominatorTree &DT, ScalarEvolution *SE)
 Process all loops in the function, inner-most out.
 
 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 54 of file LCSSA.cpp.

Function Documentation

◆ computeBlocksDominatingExits()

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

◆ formLCSSAOnAllLoops()

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

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

Definition at line 438 of file LCSSA.cpp.

References llvm::formLCSSARecursively().

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

◆ INITIALIZE_PASS_BEGIN()

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

◆ isExitBlock()

static bool isExitBlock ( BasicBlock BB,
const SmallVectorImpl< BasicBlock * > &  ExitBlocks 
)
static

Return true if the specified block is in the list.

Definition at line 69 of file LCSSA.cpp.

References llvm::is_contained().

Referenced by llvm::formLCSSAForInstructions(), and llvm::LoopBase< BlockT, LoopT >::getExitingBlock().

◆ STATISTIC()

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

Variable Documentation

◆ false

Loop Closed SSA Form false

Definition at line 504 of file LCSSA.cpp.

◆ lcssa

lcssa

Definition at line 503 of file LCSSA.cpp.

◆ Pass

Loop Closed SSA Form Pass

Definition at line 503 of file LCSSA.cpp.

◆ VerifyLoopLCSSA

bool VerifyLoopLCSSA = false
static

Definition at line 61 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)")) ( "verify-loop-lcssa"  ,
cl::location(VerifyLoopLCSSA ,
cl::Hidden  ,
cl::desc("Verify loop lcssa form (time consuming)")   
)
static