reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Scalar/LICM.cpp
  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))