Lines Matching refs:DVIRec

6277 static void UpdateDbgValueInst(DVIRecoveryRec &DVIRec,  in UpdateDbgValueInst()  argument
6283 updateDVIWithLocation(*DVIRec.DVI, NewLocationOps[0], NewExpr); in UpdateDbgValueInst()
6290 updateDVIWithLocation(*DVIRec.DVI, NewLocationOps[0], ShortenedOps); in UpdateDbgValueInst()
6293 updateDVIWithLocations(*DVIRec.DVI, NewLocationOps, NewExpr); in UpdateDbgValueInst()
6299 DIExpression *SalvageExpr = DVIRec.DVI->getExpression(); in UpdateDbgValueInst()
6300 if (!DVIRec.Expr->isComplex() && SalvageExpr->isComplex()) { in UpdateDbgValueInst()
6302 DVIRec.DVI->setExpression(SalvageExpr); in UpdateDbgValueInst()
6316 static void restorePreTransformState(DVIRecoveryRec &DVIRec) { in restorePreTransformState() argument
6318 << "scev-salvage: post-LSR: " << *DVIRec.DVI << '\n'); in restorePreTransformState()
6319 assert(DVIRec.Expr && "Expected an expression"); in restorePreTransformState()
6320 DVIRec.DVI->setExpression(DVIRec.Expr); in restorePreTransformState()
6324 if (!DVIRec.HadLocationArgList) { in restorePreTransformState()
6325 assert(DVIRec.LocationOps.size() == 1 && in restorePreTransformState()
6331 getValueOrUndef(DVIRec.LocationOps[0], DVIRec.DVI->getContext()); in restorePreTransformState()
6332 DVIRec.DVI->setRawLocation(ValueAsMetadata::get(CachedValue)); in restorePreTransformState()
6335 for (WeakVH VH : DVIRec.LocationOps) { in restorePreTransformState()
6336 Value *CachedValue = getValueOrUndef(VH, DVIRec.DVI->getContext()); in restorePreTransformState()
6340 DVIRec.DVI->setRawLocation( in restorePreTransformState()
6341 llvm::DIArgList::get(DVIRec.DVI->getContext(), ValArrayRef)); in restorePreTransformState()
6343 LLVM_DEBUG(dbgs() << "scev-salvage: pre-LSR: " << *DVIRec.DVI << '\n'); in restorePreTransformState()
6347 llvm::PHINode *LSRInductionVar, DVIRecoveryRec &DVIRec, in SalvageDVI() argument
6350 if (!DVIRec.DVI->isUndef()) in SalvageDVI()
6357 restorePreTransformState(DVIRec); in SalvageDVI()
6362 LocationOpIndexMap.assign(DVIRec.LocationOps.size(), -1); in SalvageDVI()
6366 for (unsigned i = 0; i < DVIRec.LocationOps.size(); i++) { in SalvageDVI()
6367 WeakVH VH = DVIRec.LocationOps[i]; in SalvageDVI()
6381 if (SE.containsErasedValue(DVIRec.SCEVs[i]) || in SalvageDVI()
6382 SE.containsUndefs(DVIRec.SCEVs[i])) { in SalvageDVI()
6390 << " with SCEV: " << *DVIRec.SCEVs[i] << "\n"); in SalvageDVI()
6392 DVIRec.RecoveryExprs[i] = std::make_unique<SCEVDbgValueBuilder>(); in SalvageDVI()
6393 SCEVDbgValueBuilder *SalvageExpr = DVIRec.RecoveryExprs[i].get(); in SalvageDVI()
6398 SE.computeConstantDifference(DVIRec.SCEVs[i], SCEVInductionVar)) { in SalvageDVI()
6402 } else if (!SalvageExpr->createIterCountExpr(DVIRec.SCEVs[i], IterCountExpr, in SalvageDVI()
6410 if (DVIRec.Expr->getNumElements() == 0) { in SalvageDVI()
6411 assert(DVIRec.RecoveryExprs.size() == 1 && in SalvageDVI()
6414 assert(DVIRec.RecoveryExprs[0] && in SalvageDVI()
6416 SCEVDbgValueBuilder *B = DVIRec.RecoveryExprs[0].get(); in SalvageDVI()
6419 for (const auto &Op : DVIRec.Expr->expr_ops()) { in SalvageDVI()
6428 DVIRec.RecoveryExprs[LocationArgIndex].get(); in SalvageDVI()
6443 UpdateDbgValueInst(DVIRec, NewLocationOps, NewExpr); in SalvageDVI()
6444 LLVM_DEBUG(dbgs() << "scev-salvage: Updated DVI: " << *DVIRec.DVI << "\n"); in SalvageDVI()
6479 for (auto &DVIRec : DVIToUpdate) { in DbgRewriteSalvageableDVIs() local
6480 SalvageDVI(L, SE, LSRInductionVar, *DVIRec, SCEVInductionVar, in DbgRewriteSalvageableDVIs()