Lines Matching refs:Value
19 // Two variables are considered as aliasing iff you can reach one value's node
20 // from the other value's node and the language formed by concatenating all of
61 StratifiedSets<Value *> Sets;
63 SmallVector<Value *, 4> ReturnedValues;
65 FunctionInfo(StratifiedSets<Value *> &&S, SmallVector<Value *, 4> &&RV)
69 // Try to go from a Value* to a Function*. Never returns nullptr.
70 static Optional<Function *> parentFunctionOfValue(Value *);
83 // operand. This function gets the "proper" value to track for each
85 static Optional<Value *> getTargetValue(Instruction *);
116 // The weight assigned when assigning from or to a value. For example, in:
122 // The edge used when we have an edge going from some handle to a Value.
128 // The edge used when our edge goes from a value to a handle that may have
137 // \brief Which value the edge is coming from
138 Value *From;
140 // \brief Which value the edge is pointing to
141 Value *To;
151 Edge(Value *From, Value *To, EdgeType W, StratifiedAttrs A)
203 for (Value *Val : Inst.incoming_values()) {
244 // 1. Loads a value from *((T*)*Ptr).
258 static Optional<Level> getIndexRelation(const StratifiedSets<Value *> &Sets,
283 Value *FuncValue,
303 SmallVector<Value *, ExpectedMaxArgs> Arguments(Args.begin(), Args.end());
319 // Adding an edge from argument -> return value for each parameter that
320 // may alias the return value
393 for (Value *V : Inst.arg_operands())
405 // there's nothing we can do to coax a value out of them, other
406 // than calling Extract{Element,Value}. We can effectively treat
462 // For a given instruction, we need to know which Value* to get the
467 // value to follow for us.
473 : public InstVisitor<GetTargetValueVisitor, Value *> {
475 Value *visitInstruction(Instruction &Inst) { return &Inst; }
477 Value *visitStoreInst(StoreInst &Inst) { return Inst.getPointerOperand(); }
479 Value *visitAtomicCmpXchgInst(AtomicCmpXchgInst &Inst) {
483 Value *visitAtomicRMWInst(AtomicRMWInst &Inst) {
487 Value *visitInsertElementInst(InsertElementInst &Inst) {
491 Value *visitInsertValueInst(InsertValueInst &Inst) {
632 typedef DenseMap<Value *, GraphT::Node> NodeMapT;
642 // Given a Value, potentially return which AttrIndex it maps to.
643 static Optional<StratifiedAttr> valueToAttrIndex(Value *Val);
661 SmallVectorImpl<Value *> &, NodeMapT &, GraphT &);
676 SmallVectorImpl<Value *> &, NodeMapT &,
679 // Notes whether it would be pointless to add the given Value to our sets.
680 static bool canSkipAddingToSets(Value *Val);
682 static Optional<Function *> parentFunctionOfValue(Value *Val) {
706 static Optional<Value *> getTargetValue(Instruction *Inst) {
724 static Optional<StratifiedAttr> valueToAttrIndex(Value *Val) {
813 SmallVectorImpl<Value *> &ReturnedValues,
815 const auto findOrInsertNode = [&Map, &Graph](Value *Val) {
876 SmallVectorImpl<Value *> &ReturnedValues,
883 static bool canSkipAddingToSets(Value *Val) {
909 SmallVector<Value *, 4> ReturnedValues;
913 DenseMap<GraphT::Node, Value
924 StratifiedSetsBuilder<Value *> Builder;
930 auto *Value = Pair.first;
931 Builder.add(Value);
1021 auto *ValA = const_cast<Value *>(LocA.Ptr);
1022 auto *ValB = const_cast<Value *>(LocB.Ptr);
1063 // its value may be different depending on the value of an argument or
1067 // the sets has no values that could legally be altered by changing the value