LLVM 19.0.0git
Macros | Functions
Sink.cpp File Reference
#include "llvm/Transforms/Scalar/Sink.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Scalar.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "sink"
 

Functions

 STATISTIC (NumSunk, "Number of instructions sunk")
 
 STATISTIC (NumSinkIter, "Number of sinking iterations")
 
static bool isSafeToMove (Instruction *Inst, AliasAnalysis &AA, SmallPtrSetImpl< Instruction * > &Stores)
 
static bool IsAcceptableTarget (Instruction *Inst, BasicBlock *SuccToSinkTo, DominatorTree &DT, LoopInfo &LI)
 IsAcceptableTarget - Return true if it is possible to sink the instruction in the specified basic block.
 
static bool SinkInstruction (Instruction *Inst, SmallPtrSetImpl< Instruction * > &Stores, DominatorTree &DT, LoopInfo &LI, AAResults &AA)
 SinkInstruction - Determine whether it is safe to sink the specified machine instruction out of its current block into a successor.
 
static bool ProcessBlock (BasicBlock &BB, DominatorTree &DT, LoopInfo &LI, AAResults &AA)
 
static bool iterativelySinkInstructions (Function &F, DominatorTree &DT, LoopInfo &LI, AAResults &AA)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "sink"

Definition at line 25 of file Sink.cpp.

Function Documentation

◆ IsAcceptableTarget()

static bool IsAcceptableTarget ( Instruction Inst,
BasicBlock SuccToSinkTo,
DominatorTree DT,
LoopInfo LI 
)
static

◆ isSafeToMove()

static bool isSafeToMove ( Instruction Inst,
AliasAnalysis AA,
SmallPtrSetImpl< Instruction * > &  Stores 
)
static

◆ iterativelySinkInstructions()

static bool iterativelySinkInstructions ( Function F,
DominatorTree DT,
LoopInfo LI,
AAResults AA 
)
static

Definition at line 212 of file Sink.cpp.

References llvm::dbgs(), F, I, LLVM_DEBUG, and ProcessBlock().

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

◆ ProcessBlock()

static bool ProcessBlock ( BasicBlock BB,
DominatorTree DT,
LoopInfo LI,
AAResults AA 
)
static

◆ SinkInstruction()

static bool SinkInstruction ( Instruction Inst,
SmallPtrSetImpl< Instruction * > &  Stores,
DominatorTree DT,
LoopInfo LI,
AAResults AA 
)
static

◆ STATISTIC() [1/2]

STATISTIC ( NumSinkIter  ,
"Number of sinking iterations"   
)

◆ STATISTIC() [2/2]

STATISTIC ( NumSunk  ,
"Number of instructions sunk"   
)