Lines Matching defs:NewGVN

1 //===- NewGVN.cpp - Global Value Numbering Pass ---------------------------===//
54 #include "llvm/Transforms/Scalar/NewGVN.h"
488 class NewGVN {
661 NewGVN(Function &F, DominatorTree *DT, AssumptionCache *AC,
926 bool NewGVN::isBackedge(BasicBlock *From, BasicBlock *To) const {
939 MemoryUseOrDef *NewGVN::getMemoryAccess(const Instruction *I) const {
945 MemoryPhi *NewGVN::getMemoryAccess(const BasicBlock *BB) const {
950 BasicBlock *NewGVN::getBlockForValue(Value *V) const {
968 void NewGVN::deleteExpression(const Expression *E) const {
996 void NewGVN::sortPHIOps(MutableArrayRef<ValPair> Ops) const {
1015 PHIExpression *NewGVN::createPHIExpression(ArrayRef<ValPair> PHIOperands,
1051 bool NewGVN::setBasicExpressionInfo(Instruction *I, BasicExpression *E) const {
1071 const Expression *NewGVN::createBinaryExpression(unsigned Opcode, Type *T,
1104 NewGVN::ExprResult NewGVN::checkExprResults(Expression *E, Instruction *I,
1147 NewGVN::ExprResult NewGVN::createExpression(Instruction *I) const {
1229 NewGVN::createAggregateValueExpression(Instruction *I) const {
1248 const DeadExpression *NewGVN::createDeadExpression() const {
1254 const VariableExpression *NewGVN::createVariableExpression(Value *V) const {
1260 const Expression *NewGVN::createVariableOrConstant(Value *V) const {
1266 const ConstantExpression *NewGVN::createConstantExpression(Constant *C) const {
1272 const UnknownExpression *NewGVN::createUnknownExpression(Instruction *I) const {
1279 NewGVN::createCallExpression(CallInst *CI, const MemoryAccess *MA) const {
1296 bool NewGVN::someEquivalentDominates(const Instruction *Inst,
1332 Value *NewGVN::lookupOperandLeader(Value *V) const {
1346 const MemoryAccess *NewGVN::lookupMemoryLeader(const MemoryAccess *MA) const {
1357 bool NewGVN::isMemoryAccessTOP(const MemoryAccess *MA) const {
1361 LoadExpression *NewGVN::createLoadExpression(Type *LoadType, Value *PointerOp,
1380 NewGVN::createStoreExpression(StoreInst *SI, const MemoryAccess *MA) const {
1397 const Expression *NewGVN::performSymbolicStoreEvaluation(Instruction *I) const {
1449 NewGVN::performSymbolicLoadCoercion(Type *LoadType, Value *LoadPtr,
1522 const Expression *NewGVN::performSymbolicLoadEvaluation(Instruction *I) const {
1564 NewGVN::ExprResult
1565 NewGVN::performSymbolicPredicateInfoEvaluation(IntrinsicInst *I) const {
1605 NewGVN::ExprResult NewGVN::performSymbolicCallEvaluation(Instruction *I) const {
1648 CongruenceClass *NewGVN::getMemoryClass(const MemoryAccess *MA) const {
1656 bool NewGVN::setMemoryClass(const MemoryAccess *From,
1704 bool NewGVN::isCycleFree(const Instruction *I) const {
1734 NewGVN::performSymbolicPHIEvaluation(ArrayRef<ValPair> PHIOps,
1831 NewGVN::performSymbolicAggrValueEvaluation(Instruction *I) const {
1845 NewGVN::ExprResult NewGVN::performSymbolicCmpEvaluation(Instruction *I) const {
1969 NewGVN::ExprResult
1970 NewGVN::performSymbolicEvaluation(Instruction *I,
2057 void NewGVN::touchAndErase(Map &M, const KeyType &Key) {
2066 void NewGVN::addAdditionalUsers(Value *To, Value *User) const {
2072 void NewGVN::addAdditionalUsers(ExprResult &Res, Instruction *User) const {
2086 void NewGVN::markUsersTouched(Value *V) {
2095 void NewGVN::addMemoryUsers(const MemoryAccess *To, MemoryAccess *U) const {
2100 void NewGVN::markMemoryDefTouched(const MemoryAccess *MA) {
2104 void NewGVN::markMemoryUsersTouched(const MemoryAccess *MA) {
2113 void NewGVN::markPredicateUsersTouched(Instruction *I) {
2118 void NewGVN::markMemoryLeaderChangeTouched(CongruenceClass *CC) {
2125 void NewGVN::markValueLeaderChangeTouched(CongruenceClass *CC) {
2136 T *NewGVN::getMinDFSOfRange(const Range &R) const {
2149 const MemoryAccess *NewGVN::getNextMemoryLeader(CongruenceClass *CC) const {
2174 Value *NewGVN::getNextValueLeader(CongruenceClass *CC) const {
2202 void NewGVN::moveMemoryToNewCongruenceClass(Instruction *I,
2242 void NewGVN::moveValueToNewCongruenceClass(Instruction *I, const Expression *E,
2330 void NewGVN::markPhiOfOpsChanged(const Expression *E) {
2335 void NewGVN::performCongruenceFinding(Instruction *I, const Expression *E) {
2434 void NewGVN::updateReachableEdge(BasicBlock *From, BasicBlock *To) {
2467 Value *NewGVN::findConditionEquivalence(Value *Cond) const {
2473 void NewGVN::processOutgoingEdges(Instruction *TI, BasicBlock *B) {
2554 void NewGVN::removePhiOfOps(Instruction *I, PHINode *PHITemp) {
2562 // are the start of NewGVN, and which were added, but right nowt he cost of
2567 void NewGVN::addPhiOfOps(PHINode *Op, BasicBlock *BB,
2594 bool NewGVN::OpIsSafeForPHIOfOps(Value *V, const BasicBlock *PHIBlock,
2656 Value *NewGVN::findLeaderForInst(Instruction *TransInst,
2694 NewGVN::makePossiblePHIOfOps(Instruction *I,
2873 void NewGVN::initializeCongruenceClasses(Function &F) {
2935 void NewGVN::cleanupTables() {
2993 std::pair<unsigned, unsigned> NewGVN::assignDFSNumbers(BasicBlock *B,
3024 void NewGVN::updateProcessedCount(const Value *V) {
3037 void NewGVN::valueNumberMemoryPhi(MemoryPhi *MP) {
3095 void NewGVN::valueNumberInstruction(Instruction *I) {
3140 bool NewGVN::singleReachablePHIPath(
3183 void NewGVN::verifyMemoryCongruency() const {
3277 void NewGVN::verifyIterationSettled(Function &F) {
3329 void NewGVN::verifyStoreExpressions() const {
3364 void NewGVN::iterateTouchedInstructions() {
3427 bool NewGVN::runGVN() {
3522 struct NewGVN::ValueDFS {
3583 void NewGVN::convertClassToDFSOrdered(
3674 void NewGVN::convertClassToLoadsAndStores(
3703 void NewGVN::deleteInstructionsInBlock(BasicBlock *BB) {
3732 void NewGVN::markInstructionForDeletion(Instruction *I) {
3737 void NewGVN::replaceInstruction(Instruction *I, Value *V) {
3788 CongruenceClass *NewGVN::getClassForExpression(const Expression *E) const {
3798 Value *NewGVN::findPHIOfOpsLeader(const Expression *E,
3829 bool NewGVN::eliminateInstructions(Function &F) {
4177 unsigned int NewGVN::getRank(const Value *V) const {
4205 bool NewGVN::shouldSwapOperands(const Value *A, const Value *B) const {
4212 bool NewGVN::shouldSwapOperandsForIntrinsic(const Value *A, const Value *B,
4245 NewGVN(F, &DT, &AC, &TLI, &AA, &MSSA, F.getDataLayout())