Lines Matching defs:NewGVN
1 //===- NewGVN.cpp - Global Value Numbering Pass ---------------------------===//
54 #include "llvm/Transforms/Scalar/NewGVN.h"
499 class NewGVN {
672 NewGVN(Function &F, DominatorTree *DT, AssumptionCache *AC,
961 bool NewGVN::isBackedge(BasicBlock *From, BasicBlock *To) const {
974 MemoryUseOrDef *NewGVN::getMemoryAccess(const Instruction *I) const {
980 MemoryPhi *NewGVN::getMemoryAccess(const BasicBlock *BB) const {
985 BasicBlock *NewGVN::getBlockForValue(Value *V) const {
1003 void NewGVN::deleteExpression(const Expression *E) const {
1031 void NewGVN::sortPHIOps(MutableArrayRef<ValPair> Ops) const {
1050 PHIExpression *NewGVN::createPHIExpression(ArrayRef<ValPair> PHIOperands,
1086 bool NewGVN::setBasicExpressionInfo(Instruction *I, BasicExpression *E) const {
1106 const Expression *NewGVN::createBinaryExpression(unsigned Opcode, Type *T,
1139 NewGVN::ExprResult NewGVN::checkExprResults(Expression *E, Instruction *I,
1182 NewGVN::ExprResult NewGVN::createExpression(Instruction *I) const {
1264 NewGVN::createAggregateValueExpression(Instruction *I) const {
1283 const DeadExpression *NewGVN::createDeadExpression() const {
1289 const VariableExpression *NewGVN::createVariableExpression(Value *V) const {
1295 const Expression *NewGVN::createVariableOrConstant(Value *V) const {
1301 const ConstantExpression *NewGVN::createConstantExpression(Constant *C) const {
1307 const UnknownExpression *NewGVN::createUnknownExpression(Instruction *I) const {
1314 NewGVN::createCallExpression(CallInst *CI, const MemoryAccess *MA) const {
1331 bool NewGVN::someEquivalentDominates(const Instruction *Inst,
1367 Value *NewGVN::lookupOperandLeader(Value *V) const {
1381 const MemoryAccess *NewGVN::lookupMemoryLeader(const MemoryAccess *MA) const {
1392 bool NewGVN::isMemoryAccessTOP(const MemoryAccess *MA) const {
1396 LoadExpression *NewGVN::createLoadExpression(Type *LoadType, Value *PointerOp,
1415 NewGVN::createStoreExpression(StoreInst *SI, const MemoryAccess *MA) const {
1432 const Expression *NewGVN::performSymbolicStoreEvaluation(Instruction *I) const {
1484 NewGVN::performSymbolicLoadCoercion(Type *LoadType, Value *LoadPtr,
1557 const Expression *NewGVN::performSymbolicLoadEvaluation(Instruction *I) const {
1599 NewGVN::ExprResult
1600 NewGVN::performSymbolicPredicateInfoEvaluation(IntrinsicInst *I) const {
1640 NewGVN::ExprResult NewGVN::performSymbolicCallEvaluation(Instruction *I) const {
1683 CongruenceClass *NewGVN::getMemoryClass(const MemoryAccess *MA) const {
1691 bool NewGVN::setMemoryClass(const MemoryAccess *From,
1739 bool NewGVN::isCycleFree(const Instruction *I) const {
1769 NewGVN::performSymbolicPHIEvaluation(ArrayRef<ValPair> PHIOps,
1866 NewGVN::performSymbolicAggrValueEvaluation(Instruction *I) const {
1880 NewGVN::ExprResult NewGVN::performSymbolicCmpEvaluation(Instruction *I) const {
1996 NewGVN::ExprResult
1997 NewGVN::performSymbolicEvaluation(Instruction *I,
2084 void NewGVN::touchAndErase(Map &M, const KeyType &Key) {
2093 void NewGVN::addAdditionalUsers(Value *To, Value *User) const {
2099 void NewGVN::addAdditionalUsers(ExprResult &Res, Instruction *User) const {
2113 void NewGVN::markUsersTouched(Value *V) {
2122 void NewGVN::addMemoryUsers(const MemoryAccess *To, MemoryAccess *U) const {
2127 void NewGVN::markMemoryDefTouched(const MemoryAccess *MA) {
2131 void NewGVN::markMemoryUsersTouched(const MemoryAccess *MA) {
2140 void NewGVN::markPredicateUsersTouched(Instruction *I) {
2145 void NewGVN::markMemoryLeaderChangeTouched(CongruenceClass *CC) {
2152 void NewGVN::markValueLeaderChangeTouched(CongruenceClass *CC) {
2163 T *NewGVN::getMinDFSOfRange(const Range &R) const {
2176 const MemoryAccess *NewGVN::getNextMemoryLeader(CongruenceClass *CC) const {
2201 Value *NewGVN::getNextValueLeader(CongruenceClass *CC) const {
2229 void NewGVN::moveMemoryToNewCongruenceClass(Instruction *I,
2269 void NewGVN::moveValueToNewCongruenceClass(Instruction *I, const Expression *E,
2363 void NewGVN::markPhiOfOpsChanged(const Expression *E) {
2368 void NewGVN::performCongruenceFinding(Instruction *I, const Expression *E) {
2467 void NewGVN::updateReachableEdge(BasicBlock *From, BasicBlock *To) {
2500 Value *NewGVN::findConditionEquivalence(Value *Cond) const {
2506 void NewGVN::processOutgoingEdges(Instruction *TI, BasicBlock *B) {
2587 void NewGVN::removePhiOfOps(Instruction *I, PHINode *PHITemp) {
2595 // are the start of NewGVN, and which were added, but right nowt he cost of
2600 void NewGVN::addPhiOfOps(PHINode *Op, BasicBlock *BB,
2627 bool NewGVN::OpIsSafeForPHIOfOps(Value *V, const BasicBlock *PHIBlock,
2689 Value *NewGVN::findLeaderForInst(Instruction *TransInst,
2727 NewGVN::makePossiblePHIOfOps(Instruction *I,
2906 void NewGVN::initializeCongruenceClasses(Function &F) {
2968 void NewGVN::cleanupTables() {
3026 std::pair<unsigned, unsigned> NewGVN::assignDFSNumbers(BasicBlock *B,
3057 void NewGVN::updateProcessedCount(const Value *V) {
3070 void NewGVN::valueNumberMemoryPhi(MemoryPhi *MP) {
3128 void NewGVN::valueNumberInstruction(Instruction *I) {
3173 bool NewGVN::singleReachablePHIPath(
3216 void NewGVN::verifyMemoryCongruency() const {
3309 void NewGVN::verifyIterationSettled(Function &F) {
3361 void NewGVN::verifyStoreExpressions() const {
3396 void NewGVN::iterateTouchedInstructions() {
3459 bool NewGVN::runGVN() {
3554 struct NewGVN::ValueDFS {
3615 void NewGVN::convertClassToDFSOrdered(
3706 void NewGVN::convertClassToLoadsAndStores(
3735 void NewGVN::deleteInstructionsInBlock(BasicBlock *BB) {
3764 void NewGVN::markInstructionForDeletion(Instruction *I) {
3769 void NewGVN::replaceInstruction(Instruction *I, Value *V) {
3820 CongruenceClass *NewGVN::getClassForExpression(const Expression *E) const {
3830 Value *NewGVN::findPHIOfOpsLeader(const Expression *E,
3861 bool NewGVN::eliminateInstructions(Function &F) {
4211 unsigned int NewGVN::getRank(const Value *V) const {
4239 bool NewGVN::shouldSwapOperands(const Value *A, const Value *B) const {
4246 bool NewGVN::shouldSwapOperandsForIntrinsic(const Value *A, const Value *B,
4279 NewGVN(F, &DT, &AC, &TLI, &AA, &MSSA, F.getDataLayout())