Lines Matching refs:ValueLatticeElement
37 static ValueLatticeElement::MergeOptions getMaxWidenStepsOpts() { in getMaxWidenStepsOpts()
38 return ValueLatticeElement::MergeOptions().setMaxWidenSteps( in getMaxWidenStepsOpts()
48 bool isConstant(const ValueLatticeElement &LV) { in isConstant()
57 bool isOverdefined(const ValueLatticeElement &LV) { in isOverdefined()
71 DenseMap<Value *, ValueLatticeElement>
76 DenseMap<std::pair<Value *, unsigned>, ValueLatticeElement> StructValueState;
82 DenseMap<GlobalVariable *, ValueLatticeElement> TrackedGlobals;
87 MapVector<Function *, ValueLatticeElement> TrackedRetVals;
91 MapVector<std::pair<Function *, unsigned>, ValueLatticeElement>
130 ConstantInt *getConstantInt(const ValueLatticeElement &IV) const { in getConstantInt()
135 void pushToWorkList(ValueLatticeElement &IV, Value *V);
139 void pushToWorkListMsg(ValueLatticeElement &IV, Value *V);
144 bool markConstant(ValueLatticeElement &IV, Value *V, Constant *C,
155 bool markOverdefined(ValueLatticeElement &IV, Value *V);
159 bool mergeInValue(ValueLatticeElement &IV, Value *V,
160 ValueLatticeElement MergeWithV,
161 ValueLatticeElement::MergeOptions Opts = {
164 bool mergeInValue(Value *V, ValueLatticeElement MergeWithV, in mergeInValue()
165 ValueLatticeElement::MergeOptions Opts = { in mergeInValue()
175 ValueLatticeElement &getValueState(Value *V) { in getValueState()
178 auto I = ValueState.insert(std::make_pair(V, ValueLatticeElement())); in getValueState()
179 ValueLatticeElement &LV = I.first->second; in getValueState()
194 ValueLatticeElement &getStructValueState(Value *V, unsigned i) { in getStructValueState()
200 std::make_pair(std::make_pair(V, i), ValueLatticeElement())); in getStructValueState()
201 ValueLatticeElement &LV = I.first->second; in getStructValueState()
356 ValueLatticeElement &IV = TrackedGlobals[GV]; in trackValueOfGlobalVariable()
367 std::make_pair(std::make_pair(F, i), ValueLatticeElement())); in addTrackedFunction()
369 TrackedRetVals.insert(std::make_pair(F, ValueLatticeElement())); in addTrackedFunction()
398 std::vector<ValueLatticeElement> getStructLatticeValueFor(Value *V) const { in getStructLatticeValueFor()
399 std::vector<ValueLatticeElement> StructValues; in getStructLatticeValueFor()
412 const ValueLatticeElement &getLatticeValueFor(Value *V) const { in getLatticeValueFor()
415 DenseMap<Value *, ValueLatticeElement>::const_iterator I = in getLatticeValueFor()
422 const MapVector<Function *, ValueLatticeElement> &getTrackedRetVals() { in getTrackedRetVals()
426 const DenseMap<GlobalVariable *, ValueLatticeElement> &getTrackedGlobals() { in getTrackedGlobals()
444 Constant *getConstant(const ValueLatticeElement &LV) const;
469 void SCCPInstVisitor::pushToWorkList(ValueLatticeElement &IV, Value *V) { in pushToWorkList()
475 void SCCPInstVisitor::pushToWorkListMsg(ValueLatticeElement &IV, Value *V) { in pushToWorkListMsg()
480 bool SCCPInstVisitor::markConstant(ValueLatticeElement &IV, Value *V, in markConstant()
489 bool SCCPInstVisitor::markOverdefined(ValueLatticeElement &IV, Value *V) { in markOverdefined()
506 ValueLatticeElement LV = It->second; in isStructLatticeConstant()
513 Constant *SCCPInstVisitor::getConstant(const ValueLatticeElement &LV) const { in getConstant()
566 bool SCCPInstVisitor::mergeInValue(ValueLatticeElement &IV, Value *V, in mergeInValue()
567 ValueLatticeElement MergeWithV, in mergeInValue()
568 ValueLatticeElement::MergeOptions Opts) { in mergeInValue()
606 ValueLatticeElement BCValue = getValueState(BI->getCondition()); in getFeasibleSuccessors()
632 const ValueLatticeElement &SCValue = getValueState(SI->getCondition()); in getFeasibleSuccessors()
663 ValueLatticeElement IBRValue = getValueState(IBR->getAddress()); in getFeasibleSuccessors()
746 ValueLatticeElement PhiState = getValueState(&PN); in visitPHINode()
751 ValueLatticeElement IV = getValueState(PN.getIncomingValue(i)); in visitPHINode()
764 ValueLatticeElement::MergeOptions().setMaxWidenSteps( in visitPHINode()
766 ValueLatticeElement &PhiStateRef = getValueState(&PN); in visitPHINode()
815 ValueLatticeElement OpSt = getValueState(I.getOperand(0)); in visitCastInst()
844 mergeInValue(LV, &I, ValueLatticeElement::getRange(Res)); in visitCastInst()
867 ValueLatticeElement EltVal = getStructValueState(AggVal, i); in visitExtractValueInst()
897 ValueLatticeElement EltVal = getStructValueState(Aggr, i); in visitInsertValueInst()
907 ValueLatticeElement InVal = getValueState(Val); in visitInsertValueInst()
924 ValueLatticeElement CondValue = getValueState(I.getCondition()); in visitSelectInst()
937 ValueLatticeElement TVal = getValueState(I.getTrueValue()); in visitSelectInst()
938 ValueLatticeElement FVal = getValueState(I.getFalseValue()); in visitSelectInst()
948 ValueLatticeElement V0State = getValueState(I.getOperand(0)); in visitUnaryOperator()
950 ValueLatticeElement &IV = ValueState[&I]; in visitUnaryOperator()
970 ValueLatticeElement V1State = getValueState(I.getOperand(0)); in visitBinaryOperator()
971 ValueLatticeElement V2State = getValueState(I.getOperand(1)); in visitBinaryOperator()
973 ValueLatticeElement &IV = ValueState[&I]; in visitBinaryOperator()
997 ValueLatticeElement NewV; in visitBinaryOperator()
1016 mergeInValue(&I, ValueLatticeElement::getRange(R)); in visitBinaryOperator()
1043 ValueLatticeElement CV; in visitCmpInst()
1067 ValueLatticeElement State = getValueState(I.getOperand(i)); in visitGetElementPtrInst()
1104 ValueLatticeElement::MergeOptions().setCheckWiden(false)); in visitStoreInst()
1109 static ValueLatticeElement getValueFromMetadata(const Instruction *I) { in getValueFromMetadata()
1112 return ValueLatticeElement::getRange( in getValueFromMetadata()
1115 return ValueLatticeElement::getNot( in getValueFromMetadata()
1117 return ValueLatticeElement::getOverdefined(); in getValueFromMetadata()
1133 ValueLatticeElement PtrVal = getValueState(I.getOperand(0)); in visitLoadInst()
1137 ValueLatticeElement &IV = ValueState[&I]; in visitLoadInst()
1194 ValueLatticeElement State = getValueState(A); in handleCallOverdefined()
1239 ValueLatticeElement CallArg = getStructValueState(*CAI, i); in handleCallArguments()
1258 ValueLatticeElement CopyOfVal = getValueState(CopyOf); in handleCallResult()
1277 ValueLatticeElement CondVal = getValueState(OtherOp); in handleCallResult()
1278 ValueLatticeElement &IV = ValueState[&CB]; in handleCallResult()
1309 ValueLatticeElement::getRange(NewCR, /*MayIncludeUndef*/ false)); in handleCallResult()
1321 ValueLatticeElement::getNot(CondVal.getConstant())); in handleCallResult()
1334 const ValueLatticeElement &State = getValueState(Op); in handleCallResult()
1344 return (void)mergeInValue(II, ValueLatticeElement::getRange(Result)); in handleCallResult()
1466 ValueLatticeElement &LV = getStructValueState(&I, i); in resolvedUndefsIn()
1475 ValueLatticeElement &LV = getValueState(&I); in resolvedUndefsIn()
1568 std::vector<ValueLatticeElement>
1577 const ValueLatticeElement &SCCPSolver::getLatticeValueFor(Value *V) const { in getLatticeValueFor()
1581 const MapVector<Function *, ValueLatticeElement> &
1586 const DenseMap<GlobalVariable *, ValueLatticeElement> &
1601 Constant *SCCPSolver::getConstant(const ValueLatticeElement &LV) const { in getConstant()