reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
832 &I, I.getModule()->getDataLayout(), TLI)) { 832 &I, I.getModule()->getDataLayout(), TLI)) { 833 LLVM_DEBUG(dbgs() << "LICM folding inst: " << I << " --> " << *C 836 CurAST->copyValue(&I, C); 838 I.replaceAllUsesWith(C); 839 if (isInstructionTriviallyDead(&I, TLI)) 840 eraseInstruction(I, *SafetyInfo, CurAST, MSSAU); 851 if (CurLoop->hasLoopInvariantOperands(&I) && 852 canSinkOrHoistInst(I, AA, DT, CurLoop, CurAST, MSSAU, true, &Flags, 855 I, DT, CurLoop, SafetyInfo, ORE, 857 hoist(I, DT, CurLoop, CFH.getOrCreateHoistedBlock(BB), SafetyInfo, 859 HoistedInstructions.push_back(&I); 866 if (I.getOpcode() == Instruction::FDiv && 867 CurLoop->isLoopInvariant(I.getOperand(1)) && 868 I.hasAllowReciprocal()) { 869 auto Divisor = I.getOperand(1); 872 ReciprocalDivisor->setFastMathFlags(I.getFastMathFlags()); 873 SafetyInfo->insertInstructionTo(ReciprocalDivisor, I.getParent()); 874 ReciprocalDivisor->insertBefore(&I); 877 BinaryOperator::CreateFMul(I.getOperand(0), ReciprocalDivisor); 878 Product->setFastMathFlags(I.getFastMathFlags()); 879 SafetyInfo->insertInstructionTo(Product, I.getParent()); 880 Product->insertAfter(&I); 881 I.replaceAllUsesWith(Product); 882 eraseInstruction(I, *SafetyInfo, CurAST, MSSAU); 900 if ((IsInvariantStart(I) || isGuard(&I)) && 900 if ((IsInvariantStart(I) || isGuard(&I)) && 901 CurLoop->hasLoopInvariantOperands(&I) && 902 MustExecuteWithoutWritesBefore(I)) { 903 hoist(I, DT, CurLoop, CFH.getOrCreateHoistedBlock(BB), SafetyInfo, 905 HoistedInstructions.push_back(&I); 910 if (PHINode *PN = dyn_cast<PHINode>(&I)) { 927 if (BranchInst *BI = dyn_cast<BranchInst>(&I))