Lines Matching refs:Solver
100 static bool tryToReplaceWithConstant(SCCPSolver &Solver, Value *V) { in tryToReplaceWithConstant() argument
103 std::vector<ValueLatticeElement> IVs = Solver.getStructLatticeValueFor(V); in tryToReplaceWithConstant()
112 ? Solver.getConstant(V) in tryToReplaceWithConstant()
117 const ValueLatticeElement &IV = Solver.getLatticeValueFor(V); in tryToReplaceWithConstant()
122 isConstant(IV) ? Solver.getConstant(IV) : UndefValue::get(V->getType()); in tryToReplaceWithConstant()
137 Solver.addToMustPreserveReturnsInFunctions(F); in tryToReplaceWithConstant()
151 static bool simplifyInstsInBlock(SCCPSolver &Solver, BasicBlock &BB, in simplifyInstsInBlock() argument
159 if (tryToReplaceWithConstant(Solver, &Inst)) { in simplifyInstsInBlock()
169 const ValueLatticeElement &IV = Solver.getLatticeValueFor(ExtOp); in simplifyInstsInBlock()
176 Solver.removeLatticeValueFor(&Inst); in simplifyInstsInBlock()
191 SCCPSolver Solver( in runSCCP() local
196 Solver.markBlockExecutable(&F.front()); in runSCCP()
200 Solver.markOverdefined(&AI); in runSCCP()
205 Solver.solve(); in runSCCP()
207 ResolvedUndefs = Solver.resolvedUndefsIn(F); in runSCCP()
218 if (!Solver.isBlockExecutable(&BB)) { in runSCCP()
228 MadeChanges |= simplifyInstsInBlock(Solver, BB, InsertedValues, in runSCCP()
295 SCCPSolver &Solver) { in findReturnsToZap() argument
297 if (!Solver.isArgumentTrackedFunction(&F)) in findReturnsToZap()
300 if (Solver.mustPreserveReturn(&F)) { in findReturnsToZap()
311 [&Solver](User *U) { in findReturnsToZap()
313 !Solver.isBlockExecutable(cast<Instruction>(U)->getParent())) in findReturnsToZap()
322 return all_of(Solver.getStructLatticeValueFor(U), in findReturnsToZap()
327 return !isOverdefined(Solver.getLatticeValueFor(U)); in findReturnsToZap()
345 static bool removeNonFeasibleEdges(const SCCPSolver &Solver, BasicBlock *BB, in removeNonFeasibleEdges() argument
350 if (Solver.isEdgeFeasible(BB, Succ)) in removeNonFeasibleEdges()
413 SCCPSolver Solver(DL, GetTLI, M.getContext()); in runIPSCCP() local
421 Solver.addAnalysis(F, getAnalysis(F)); in runIPSCCP()
426 Solver.addTrackedFunction(&F); in runIPSCCP()
431 Solver.addArgumentTrackedFunction(&F); in runIPSCCP()
436 Solver.markBlockExecutable(&F.front()); in runIPSCCP()
440 Solver.markOverdefined(&AI); in runIPSCCP()
449 Solver.trackValueOfGlobalVariable(&G); in runIPSCCP()
454 Solver.solve(); in runIPSCCP()
459 if (Solver.resolvedUndefsIn(F)) in runIPSCCP()
463 Solver.solve(); in runIPSCCP()
477 if (Solver.isBlockExecutable(&F.front())) { in runIPSCCP()
480 if (!Arg.use_empty() && tryToReplaceWithConstant(Solver, &Arg)) { in runIPSCCP()
508 if (!Solver.isBlockExecutable(&BB)) { in runIPSCCP()
519 MadeChanges |= simplifyInstsInBlock(Solver, BB, InsertedValues, in runIPSCCP()
523 DomTreeUpdater DTU = Solver.getDTU(F); in runIPSCCP()
532 if (!Solver.isBlockExecutable(&F.front())) in runIPSCCP()
537 MadeChanges |= removeNonFeasibleEdges(Solver, &BB, DTU); in runIPSCCP()
545 if (Solver.getPredicateInfoFor(Inst)) { in runIPSCCP()
570 for (const auto &I : Solver.getTrackedRetVals()) { in runIPSCCP()
612 findReturnsToZap(*F, ReturnsToZap, Solver); in runIPSCCP()
615 for (auto F : Solver.getMRVFunctionsTracked()) { in runIPSCCP()
619 if (Solver.isStructLatticeConstant(F, STy)) in runIPSCCP()
620 findReturnsToZap(*F, ReturnsToZap, Solver); in runIPSCCP()
649 for (auto &I : make_early_inc_range(Solver.getTrackedGlobals())) { in runIPSCCP()