Lines Matching refs:Expression

165 Expression::~Expression() = default;
300 CongruenceClass(unsigned ID, Value *Leader, const Expression *E) in CongruenceClass()
331 const Expression *getDefiningExpr() const { return DefiningExpr; } in getDefiningExpr()
410 const Expression *DefiningExpr = nullptr;
430 const Expression &E;
432 explicit ExactEqualsExpression(const Expression &E) : E(E) {} in ExactEqualsExpression()
436 bool operator==(const Expression &Other) const { in operator ==()
441 template <> struct DenseMapInfo<const Expression *> {
442 static const Expression *getEmptyKey() { in getEmptyKey()
444 Val <<= PointerLikeTypeTraits<const Expression *>::NumLowBitsAvailable; in getEmptyKey()
445 return reinterpret_cast<const Expression *>(Val); in getEmptyKey()
448 static const Expression *getTombstoneKey() { in getTombstoneKey()
450 Val <<= PointerLikeTypeTraits<const Expression *>::NumLowBitsAvailable; in getTombstoneKey()
451 return reinterpret_cast<const Expression *>(Val); in getTombstoneKey()
454 static unsigned getHashValue(const Expression *E) { in getHashValue()
462 static bool isEqual(const ExactEqualsExpression &LHS, const Expression *RHS) { in isEqual()
468 static bool isEqual(const Expression *LHS, const Expression *RHS) { in isEqual()
524 DenseMap<Value *, const Expression *> ValueToExpression;
550 DenseMap<const Expression *, SmallPtrSet<Instruction *, 2>>
607 using ExpressionClassMap = DenseMap<const Expression *, CongruenceClass *>;
670 const Expression *Expr;
674 ExprResult(const Expression *Expr, Value *ExtraDep = nullptr, in ExprResult()
692 static ExprResult some(const Expression *Expr, Value *ExtraDep = nullptr) { in some()
695 static ExprResult some(const Expression *Expr, in some()
699 static ExprResult some(const Expression *Expr, Value *ExtraDep, in some()
707 const Expression *createBinaryExpression(unsigned, Type *, Value *, Value *,
720 const Expression *createVariableOrConstant(Value *V) const;
733 CongruenceClass *createCongruenceClass(Value *Leader, const Expression *E) { in createCongruenceClass()
760 const Expression *makePossiblePHIOfOps(Instruction *,
776 ExprResult checkExprResults(Expression *, Instruction *, Value *) const;
779 const Expression *performSymbolicLoadCoercion(Type *, Value *, LoadInst *,
782 const Expression *performSymbolicLoadEvaluation(Instruction *) const;
783 const Expression *performSymbolicStoreEvaluation(Instruction *) const;
786 const Expression *performSymbolicPHIEvaluation(ArrayRef<ValPair>,
789 const Expression *performSymbolicAggrValueEvaluation(Instruction *) const;
796 CongruenceClass *getClassForExpression(const Expression *E) const;
797 void performCongruenceFinding(Instruction *, const Expression *);
798 void moveValueToNewCongruenceClass(Instruction *, const Expression *,
833 Value *findPHIOfOpsLeader(const Expression *, const Instruction *,
845 void markPhiOfOpsChanged(const Expression *E);
863 void deleteExpression(const Expression *E) const;
901 static bool equalsLoadStoreHelper(const T &LHS, const Expression &RHS) { in equalsLoadStoreHelper()
907 bool LoadExpression::equals(const Expression &Other) const { in equals()
911 bool StoreExpression::equals(const Expression &Other) const { in equals()
964 void NewGVN::deleteExpression(const Expression *E) const { in deleteExpression()
1067 const Expression *NewGVN::createBinaryExpression(unsigned Opcode, Type *T, in createBinaryExpression()
1100 NewGVN::ExprResult NewGVN::checkExprResults(Expression *E, Instruction *I, in checkExprResults()
1256 const Expression *NewGVN::createVariableOrConstant(Value *V) const { in createVariableOrConstant()
1393 const Expression *NewGVN::performSymbolicStoreEvaluation(Instruction *I) const { in performSymbolicStoreEvaluation()
1444 const Expression *
1518 const Expression *NewGVN::performSymbolicLoadEvaluation(Instruction *I) const { in performSymbolicLoadEvaluation()
1729 const Expression *
1826 const Expression *
1969 const Expression *E = nullptr; in performSymbolicEvaluation()
2238 void NewGVN::moveValueToNewCongruenceClass(Instruction *I, const Expression *E, in moveValueToNewCongruenceClass()
2326 void NewGVN::markPhiOfOpsChanged(const Expression *E) { in markPhiOfOpsChanged()
2331 void NewGVN::performCongruenceFinding(Instruction *I, const Expression *E) { in performCongruenceFinding()
2670 const Expression *E = Res.Expr; in findLeaderForInst()
2693 const Expression *
3098 const Expression *Symbolized = nullptr; in valueNumberInstruction()
3783 CongruenceClass *NewGVN::getClassForExpression(const Expression *E) const { in getClassForExpression()
3793 Value *NewGVN::findPHIOfOpsLeader(const Expression *E, in findPHIOfOpsLeader()