Lines Matching refs:ValueLatticeElement

71 static bool hasSingleValue(const ValueLatticeElement &Val) {  in hasSingleValue()
96 static ValueLatticeElement intersect(const ValueLatticeElement &A, in intersect()
97 const ValueLatticeElement &B) { in intersect()
128 return ValueLatticeElement::getRange( in intersect()
164 SmallDenseMap<AssertingVH<Value>, ValueLatticeElement, 4> LatticeElements;
201 const ValueLatticeElement &Result) { in insertResult()
214 std::optional<ValueLatticeElement>
221 return ValueLatticeElement::getOverdefined(); in getCachedValueInfo()
396 std::optional<ValueLatticeElement> getBlockValue(Value *Val, BasicBlock *BB,
398 std::optional<ValueLatticeElement> getEdgeValue(Value *V, BasicBlock *F,
406 std::optional<ValueLatticeElement> solveBlockValueImpl(Value *Val,
408 std::optional<ValueLatticeElement> solveBlockValueNonLocal(Value *Val,
410 std::optional<ValueLatticeElement> solveBlockValuePHINode(PHINode *PN,
412 std::optional<ValueLatticeElement> solveBlockValueSelect(SelectInst *S,
416 std::optional<ValueLatticeElement> solveBlockValueBinaryOpImpl(
420 std::optional<ValueLatticeElement>
422 std::optional<ValueLatticeElement> solveBlockValueCast(CastInst *CI,
424 std::optional<ValueLatticeElement>
426 std::optional<ValueLatticeElement> solveBlockValueIntrinsic(IntrinsicInst *II,
428 std::optional<ValueLatticeElement>
432 ValueLatticeElement &BBLV,
441 std::optional<ValueLatticeElement>
446 std::optional<ValueLatticeElement>
450 std::optional<ValueLatticeElement>
454 std::optional<ValueLatticeElement> getEdgeValueLocal(Value *Val,
463 ValueLatticeElement getValueInBlock(Value *V, BasicBlock *BB,
470 ValueLatticeElement getValueAt(Value *V, Instruction *CxtI);
474 ValueLatticeElement getValueOnEdge(Value *V, BasicBlock *FromBB,
478 ValueLatticeElement getValueAtUse(const Use &U);
533 ValueLatticeElement::getOverdefined()); in solve()
550 std::optional<ValueLatticeElement> BBLV = in solve()
568 std::optional<ValueLatticeElement>
573 return ValueLatticeElement::get(VC); in getBlockValue()
575 if (std::optional<ValueLatticeElement> OptLatticeVal = in getBlockValue()
583 return ValueLatticeElement::getOverdefined(); in getBlockValue()
589 static ValueLatticeElement getFromRangeMetadata(Instruction *BBI) { in getFromRangeMetadata()
597 return ValueLatticeElement::getRange( in getFromRangeMetadata()
603 return ValueLatticeElement::getOverdefined(); in getFromRangeMetadata()
613 std::optional<ValueLatticeElement> Res = solveBlockValueImpl(Val, BB); in solveBlockValue()
622 std::optional<ValueLatticeElement>
645 return ValueLatticeElement::getNot(ConstantPointerNull::get(PT)); in solveBlockValueImpl()
705 std::optional<ValueLatticeElement>
707 ValueLatticeElement Result; // Start Undefined. in solveBlockValueNonLocal()
713 return ValueLatticeElement::getOverdefined(); in solveBlockValueNonLocal()
726 std::optional<ValueLatticeElement> EdgeResult = getEdgeValue(Val, Pred, BB); in solveBlockValueNonLocal()
748 std::optional<ValueLatticeElement>
750 ValueLatticeElement Result; // Start Undefined. in solveBlockValuePHINode()
761 std::optional<ValueLatticeElement> EdgeResult = in solveBlockValuePHINode()
787 Value *Val, ValueLatticeElement &BBLV, Instruction *BBI) { in intersectAssumeOrGuardBlockValueConstantRange()
828 BBLV = ValueLatticeElement::getNot(ConstantPointerNull::get(PTy)); in intersectAssumeOrGuardBlockValueConstantRange()
832 static ConstantRange toConstantRange(const ValueLatticeElement &Val, in toConstantRange()
843 std::optional<ValueLatticeElement>
846 std::optional<ValueLatticeElement> OptTrueVal = in solveBlockValueSelect()
850 ValueLatticeElement &TrueVal = *OptTrueVal; in solveBlockValueSelect()
852 std::optional<ValueLatticeElement> OptFalseVal = in solveBlockValueSelect()
856 ValueLatticeElement &FalseVal = *OptFalseVal; in solveBlockValueSelect()
883 return ValueLatticeElement::getRange( in solveBlockValueSelect()
890 return ValueLatticeElement::getRange( in solveBlockValueSelect()
893 return ValueLatticeElement::getRange( in solveBlockValueSelect()
900 return ValueLatticeElement::getRange( in solveBlockValueSelect()
903 return ValueLatticeElement::getRange( in solveBlockValueSelect()
925 ValueLatticeElement Result = TrueVal; in solveBlockValueSelect()
932 std::optional<ValueLatticeElement> OptVal = getBlockValue(V, BB, CxtI); in getRangeFor()
938 std::optional<ValueLatticeElement>
952 return ValueLatticeElement::getOverdefined(); in solveBlockValueCast()
969 return ValueLatticeElement::getRange(LHSRange.castOp(CI->getOpcode(), in solveBlockValueCast()
973 std::optional<ValueLatticeElement>
992 return ValueLatticeElement::getRange(OpFn(LHSRange, RHSRange)); in solveBlockValueBinaryOpImpl()
995 std::optional<ValueLatticeElement>
1019 std::optional<ValueLatticeElement>
1028 std::optional<ValueLatticeElement>
1030 ValueLatticeElement MetadataVal = getFromRangeMetadata(II); in solveBlockValueIntrinsic()
1045 return intersect(ValueLatticeElement::getRange(ConstantRange::intrinsic( in solveBlockValueIntrinsic()
1050 std::optional<ValueLatticeElement>
1066 return ValueLatticeElement::getOverdefined(); in solveBlockValueExtractValue()
1103 std::optional<ValueLatticeElement>
1114 std::optional<ValueLatticeElement> R = in getValueFromSimpleICmpCondition()
1126 return ValueLatticeElement::getRange(TrueValues.subtract(Offset)); in getValueFromSimpleICmpCondition()
1149 std::optional<ValueLatticeElement> LazyValueInfoImpl::getValueFromICmpCondition( in getValueFromICmpCondition()
1161 return ValueLatticeElement::get(cast<Constant>(RHS)); in getValueFromICmpCondition()
1163 return ValueLatticeElement::getNot(cast<Constant>(RHS)); in getValueFromICmpCondition()
1169 return ValueLatticeElement::getOverdefined(); in getValueFromICmpCondition()
1191 return ValueLatticeElement::getRange( in getValueFromICmpCondition()
1197 return ValueLatticeElement::getRange(ConstantRange::getNonEmpty( in getValueFromICmpCondition()
1212 return ValueLatticeElement::getRange(ConstantRange::getNonEmpty( in getValueFromICmpCondition()
1232 return ValueLatticeElement::getRange(*CR); in getValueFromICmpCondition()
1235 return ValueLatticeElement::getOverdefined(); in getValueFromICmpCondition()
1240 static ValueLatticeElement getValueFromOverflowCondition( in getValueFromOverflowCondition()
1247 return ValueLatticeElement::getOverdefined(); in getValueFromOverflowCondition()
1257 return ValueLatticeElement::getRange(NWR); in getValueFromOverflowCondition()
1260 std::optional<ValueLatticeElement>
1273 return ValueLatticeElement::getOverdefined(); in getValueFromCondition()
1286 return ValueLatticeElement::getOverdefined(); in getValueFromCondition()
1288 std::optional<ValueLatticeElement> LV = in getValueFromCondition()
1292 std::optional<ValueLatticeElement> RV = in getValueFromCondition()
1326 static ValueLatticeElement constantFoldUser(User *Usr, Value *Op, in constantFoldUser()
1337 return ValueLatticeElement::getRange(ConstantRange(C->getValue())); in constantFoldUser()
1348 return ValueLatticeElement::getRange(ConstantRange(C->getValue())); in constantFoldUser()
1352 return ValueLatticeElement::getRange(ConstantRange(OpConstVal)); in constantFoldUser()
1354 return ValueLatticeElement::getOverdefined(); in constantFoldUser()
1358 std::optional<ValueLatticeElement>
1376 return ValueLatticeElement::get(ConstantInt::get( in getEdgeValueLocal()
1381 std::optional<ValueLatticeElement> Result = in getEdgeValueLocal()
1416 ValueLatticeElement OpLatticeVal = *getValueFromCondition( in getEdgeValueLocal()
1437 return ValueLatticeElement::getOverdefined(); in getEdgeValueLocal()
1445 return ValueLatticeElement::getOverdefined(); in getEdgeValueLocal()
1460 ValueLatticeElement EdgeLatticeVal = in getEdgeValueLocal()
1463 return ValueLatticeElement::getOverdefined(); in getEdgeValueLocal()
1478 return ValueLatticeElement::getRange(std::move(EdgesVals)); in getEdgeValueLocal()
1480 return ValueLatticeElement::getOverdefined(); in getEdgeValueLocal()
1485 std::optional<ValueLatticeElement>
1490 return ValueLatticeElement::get(VC); in getEdgeValue()
1492 std::optional<ValueLatticeElement> LocalResult = in getEdgeValue()
1501 std::optional<ValueLatticeElement> OptInBlock = in getEdgeValue()
1505 ValueLatticeElement &InBlock = *OptInBlock; in getEdgeValue()
1520 ValueLatticeElement LazyValueInfoImpl::getValueInBlock(Value *V, BasicBlock *BB, in getValueInBlock()
1526 std::optional<ValueLatticeElement> OptResult = getBlockValue(V, BB, CxtI); in getValueInBlock()
1533 ValueLatticeElement Result = *OptResult; in getValueInBlock()
1538 ValueLatticeElement LazyValueInfoImpl::getValueAt(Value *V, Instruction *CxtI) { in getValueAt()
1543 return ValueLatticeElement::get(C); in getValueAt()
1545 ValueLatticeElement Result = ValueLatticeElement::getOverdefined(); in getValueAt()
1554 ValueLatticeElement LazyValueInfoImpl::
1561 std::optional<ValueLatticeElement> Result = in getValueOnEdge()
1575 ValueLatticeElement LazyValueInfoImpl::getValueAtUse(const Use &U) { in getValueAtUse()
1578 ValueLatticeElement VL = getValueInBlock(V, CxtI->getParent(), CxtI); in getValueAtUse()
1586 std::optional<ValueLatticeElement> CondVal; in getValueAtUse()
1720 ValueLatticeElement Result = in getConstant()
1737 ValueLatticeElement Result = in getConstantRange()
1745 ValueLatticeElement Result = in getConstantRangeAtUse()
1756 ValueLatticeElement Result = in getConstantOnEdge()
1774 ValueLatticeElement Result = in getConstantRangeOnEdge()
1781 getPredicateResult(unsigned Pred, Constant *C, const ValueLatticeElement &Val, in getPredicateResult()
1850 ValueLatticeElement Result = in getPredicateOnEdge()
1874 ValueLatticeElement Result = in getPredicateAt()
1979 ValueLatticeElement L = in getPredicateAt()
1984 ValueLatticeElement R = in getPredicateAt()
2030 ValueLatticeElement Result = LVIImpl->getValueInBlock( in emitBasicBlockStartAnnot()
2055 ValueLatticeElement Result = LVIImpl->getValueInBlock( in emitInstructionAnnot()