mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[LoopIdiomRecognize] Replace more unchecked dyn_casts with cast.
Two of these are immediately dereferenced on the next line. The other two are passed immediately to the IRBuilder constructor which can't handle a nullptr. llvm-svn: 331500
This commit is contained in:
parent
cad41d3462
commit
b8509ccc4e
@ -1539,7 +1539,7 @@ static CallInst *createCTLZIntrinsic(IRBuilder<> &IRBuilder, Value *Val,
|
|||||||
void LoopIdiomRecognize::transformLoopToCountable(
|
void LoopIdiomRecognize::transformLoopToCountable(
|
||||||
BasicBlock *Preheader, Instruction *CntInst, PHINode *CntPhi, Value *InitX,
|
BasicBlock *Preheader, Instruction *CntInst, PHINode *CntPhi, Value *InitX,
|
||||||
const DebugLoc DL, bool ZeroCheck, bool IsCntPhiUsedOutsideLoop) {
|
const DebugLoc DL, bool ZeroCheck, bool IsCntPhiUsedOutsideLoop) {
|
||||||
BranchInst *PreheaderBr = dyn_cast<BranchInst>(Preheader->getTerminator());
|
BranchInst *PreheaderBr = cast<BranchInst>(Preheader->getTerminator());
|
||||||
|
|
||||||
// Step 1: Insert the CTLZ instruction at the end of the preheader block
|
// Step 1: Insert the CTLZ instruction at the end of the preheader block
|
||||||
// Count = BitWidth - CTLZ(InitX);
|
// Count = BitWidth - CTLZ(InitX);
|
||||||
@ -1587,7 +1587,7 @@ void LoopIdiomRecognize::transformLoopToCountable(
|
|||||||
// ...
|
// ...
|
||||||
// Br: loop if (Dec != 0)
|
// Br: loop if (Dec != 0)
|
||||||
BasicBlock *Body = *(CurLoop->block_begin());
|
BasicBlock *Body = *(CurLoop->block_begin());
|
||||||
auto *LbBr = dyn_cast<BranchInst>(Body->getTerminator());
|
auto *LbBr = cast<BranchInst>(Body->getTerminator());
|
||||||
ICmpInst *LbCond = cast<ICmpInst>(LbBr->getCondition());
|
ICmpInst *LbCond = cast<ICmpInst>(LbBr->getCondition());
|
||||||
Type *Ty = Count->getType();
|
Type *Ty = Count->getType();
|
||||||
|
|
||||||
@ -1624,7 +1624,7 @@ void LoopIdiomRecognize::transformLoopToPopcount(BasicBlock *PreCondBB,
|
|||||||
Instruction *CntInst,
|
Instruction *CntInst,
|
||||||
PHINode *CntPhi, Value *Var) {
|
PHINode *CntPhi, Value *Var) {
|
||||||
BasicBlock *PreHead = CurLoop->getLoopPreheader();
|
BasicBlock *PreHead = CurLoop->getLoopPreheader();
|
||||||
auto *PreCondBr = dyn_cast<BranchInst>(PreCondBB->getTerminator());
|
auto *PreCondBr = cast<BranchInst>(PreCondBB->getTerminator());
|
||||||
const DebugLoc DL = CntInst->getDebugLoc();
|
const DebugLoc DL = CntInst->getDebugLoc();
|
||||||
|
|
||||||
// Assuming before transformation, the loop is following:
|
// Assuming before transformation, the loop is following:
|
||||||
@ -1695,7 +1695,7 @@ void LoopIdiomRecognize::transformLoopToPopcount(BasicBlock *PreCondBB,
|
|||||||
// do { cnt++; x &= x-1; t--) } while (t > 0);
|
// do { cnt++; x &= x-1; t--) } while (t > 0);
|
||||||
BasicBlock *Body = *(CurLoop->block_begin());
|
BasicBlock *Body = *(CurLoop->block_begin());
|
||||||
{
|
{
|
||||||
auto *LbBr = dyn_cast<BranchInst>(Body->getTerminator());
|
auto *LbBr = cast<BranchInst>(Body->getTerminator());
|
||||||
ICmpInst *LbCond = cast<ICmpInst>(LbBr->getCondition());
|
ICmpInst *LbCond = cast<ICmpInst>(LbBr->getCondition());
|
||||||
Type *Ty = TripCnt->getType();
|
Type *Ty = TripCnt->getType();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user