Lines Matching refs:ValueLatticeElement
40 static ValueLatticeElement::MergeOptions getMaxWidenStepsOpts() { in getMaxWidenStepsOpts()
41 return ValueLatticeElement::MergeOptions().setMaxWidenSteps( in getMaxWidenStepsOpts()
45 static ConstantRange getConstantRange(const ValueLatticeElement &LV, Type *Ty, in getConstantRange()
55 bool SCCPSolver::isConstant(const ValueLatticeElement &LV) { in isConstant()
60 bool SCCPSolver::isOverdefined(const ValueLatticeElement &LV) { in isOverdefined()
166 const ValueLatticeElement &IV = Solver.getLatticeValueFor(V); in replaceSignedInst()
345 DenseMap<Value *, ValueLatticeElement>
350 DenseMap<std::pair<Value *, unsigned>, ValueLatticeElement> StructValueState;
356 DenseMap<GlobalVariable *, ValueLatticeElement> TrackedGlobals;
361 MapVector<Function *, ValueLatticeElement> TrackedRetVals;
365 MapVector<std::pair<Function *, unsigned>, ValueLatticeElement>
409 ConstantInt *getConstantInt(const ValueLatticeElement &IV, Type *Ty) const { in getConstantInt()
414 void pushToWorkList(ValueLatticeElement &IV, Value *V);
418 void pushToWorkListMsg(ValueLatticeElement &IV, Value *V);
423 bool markConstant(ValueLatticeElement &IV, Value *V, Constant *C,
434 bool markOverdefined(ValueLatticeElement &IV, Value *V);
438 bool mergeInValue(ValueLatticeElement &IV, Value *V,
439 ValueLatticeElement MergeWithV,
440 ValueLatticeElement::MergeOptions Opts = {
443 bool mergeInValue(Value *V, ValueLatticeElement MergeWithV, in mergeInValue()
444 ValueLatticeElement::MergeOptions Opts = { in mergeInValue()
454 ValueLatticeElement &getValueState(Value *V) { in getValueState()
457 auto I = ValueState.insert(std::make_pair(V, ValueLatticeElement())); in getValueState()
458 ValueLatticeElement &LV = I.first->second; in getValueState()
473 ValueLatticeElement &getStructValueState(Value *V, unsigned i) { in getStructValueState()
479 std::make_pair(std::make_pair(V, i), ValueLatticeElement())); in getStructValueState()
480 ValueLatticeElement &LV = I.first->second; in getStructValueState()
519 It->second = ValueLatticeElement(); in invalidate()
524 TrackedMultipleRetVals[{F, I}] = ValueLatticeElement(); in invalidate()
531 It->second = ValueLatticeElement(); in invalidate()
536 It->second = ValueLatticeElement(); in invalidate()
690 ValueLatticeElement &IV = TrackedGlobals[GV]; in trackValueOfGlobalVariable()
701 std::make_pair(std::make_pair(F, i), ValueLatticeElement())); in addTrackedFunction()
703 TrackedRetVals.insert(std::make_pair(F, ValueLatticeElement())); in addTrackedFunction()
734 std::vector<ValueLatticeElement> getStructLatticeValueFor(Value *V) const { in getStructLatticeValueFor()
735 std::vector<ValueLatticeElement> StructValues; in getStructLatticeValueFor()
761 const ValueLatticeElement &getLatticeValueFor(Value *V) const { in getLatticeValueFor()
764 DenseMap<Value *, ValueLatticeElement>::const_iterator I = in getLatticeValueFor()
771 const MapVector<Function *, ValueLatticeElement> &getTrackedRetVals() { in getTrackedRetVals()
775 const DenseMap<GlobalVariable *, ValueLatticeElement> &getTrackedGlobals() { in getTrackedGlobals()
793 Constant *getConstant(const ValueLatticeElement &LV, Type *Ty) const;
852 void SCCPInstVisitor::pushToWorkList(ValueLatticeElement &IV, Value *V) { in pushToWorkList()
862 void SCCPInstVisitor::pushToWorkListMsg(ValueLatticeElement &IV, Value *V) { in pushToWorkListMsg()
867 bool SCCPInstVisitor::markConstant(ValueLatticeElement &IV, Value *V, in markConstant()
876 bool SCCPInstVisitor::markOverdefined(ValueLatticeElement &IV, Value *V) { in markOverdefined()
893 ValueLatticeElement LV = It->second; in isStructLatticeConstant()
900 Constant *SCCPInstVisitor::getConstant(const ValueLatticeElement &LV, in getConstant()
919 std::vector<ValueLatticeElement> LVs = getStructLatticeValueFor(V); in getConstantOrNull()
925 ValueLatticeElement LV = LVs[I]; in getConstantOrNull()
932 const ValueLatticeElement &LV = getLatticeValueFor(V); in getConstantOrNull()
961 ValueLatticeElement &NewValue = StructValueState[{&*NewArg, I}]; in setLatticeValueForSpecializationArguments()
971 ValueLatticeElement &NewValue = StructValueState[{&*NewArg, I}]; in setLatticeValueForSpecializationArguments()
975 ValueLatticeElement &NewValue = ValueState[&*NewArg]; in setLatticeValueForSpecializationArguments()
989 bool SCCPInstVisitor::mergeInValue(ValueLatticeElement &IV, Value *V, in mergeInValue()
990 ValueLatticeElement MergeWithV, in mergeInValue()
991 ValueLatticeElement::MergeOptions Opts) { in mergeInValue()
1029 ValueLatticeElement BCValue = getValueState(BI->getCondition()); in getFeasibleSuccessors()
1056 const ValueLatticeElement &SCValue = getValueState(SI->getCondition()); in getFeasibleSuccessors()
1091 ValueLatticeElement IBRValue = getValueState(IBR->getAddress()); in getFeasibleSuccessors()
1168 ValueLatticeElement PhiState = getValueState(&PN); in visitPHINode()
1173 ValueLatticeElement IV = getValueState(PN.getIncomingValue(i)); in visitPHINode()
1186 ValueLatticeElement::MergeOptions().setMaxWidenSteps( in visitPHINode()
1188 ValueLatticeElement &PhiStateRef = getValueState(&PN); in visitPHINode()
1237 ValueLatticeElement OpSt = getValueState(I.getOperand(0)); in visitCastInst()
1265 mergeInValue(LV, &I, ValueLatticeElement::getRange(Res)); in visitCastInst()
1274 ValueLatticeElement L = getValueState(LHS); in handleExtractOfWithOverflow()
1275 ValueLatticeElement R = getValueState(RHS); in handleExtractOfWithOverflow()
1286 mergeInValue(&EVI, ValueLatticeElement::getRange(Res)); in handleExtractOfWithOverflow()
1317 ValueLatticeElement EltVal = getStructValueState(AggVal, i); in visitExtractValueInst()
1347 ValueLatticeElement EltVal = getStructValueState(Aggr, i); in visitInsertValueInst()
1357 ValueLatticeElement InVal = getValueState(Val); in visitInsertValueInst()
1374 ValueLatticeElement CondValue = getValueState(I.getCondition()); in visitSelectInst()
1388 ValueLatticeElement TVal = getValueState(I.getTrueValue()); in visitSelectInst()
1389 ValueLatticeElement FVal = getValueState(I.getFalseValue()); in visitSelectInst()
1399 ValueLatticeElement V0State = getValueState(I.getOperand(0)); in visitUnaryOperator()
1401 ValueLatticeElement &IV = ValueState[&I]; in visitUnaryOperator()
1425 ValueLatticeElement V0State = getValueState(I.getOperand(0)); in visitFreezeInst()
1426 ValueLatticeElement &IV = ValueState[&I]; in visitFreezeInst()
1445 ValueLatticeElement V1State = getValueState(I.getOperand(0)); in visitBinaryOperator()
1446 ValueLatticeElement V2State = getValueState(I.getOperand(1)); in visitBinaryOperator()
1448 ValueLatticeElement &IV = ValueState[&I]; in visitBinaryOperator()
1476 ValueLatticeElement NewV; in visitBinaryOperator()
1490 mergeInValue(&I, ValueLatticeElement::getRange(R)); in visitBinaryOperator()
1514 ValueLatticeElement CV; in visitCmpInst()
1538 ValueLatticeElement State = getValueState(I.getOperand(i)); in visitGetElementPtrInst()
1572 ValueLatticeElement::MergeOptions().setCheckWiden(false)); in visitStoreInst()
1577 static ValueLatticeElement getValueFromMetadata(const Instruction *I) { in getValueFromMetadata()
1580 return ValueLatticeElement::getRange( in getValueFromMetadata()
1583 return ValueLatticeElement::getNot( in getValueFromMetadata()
1585 return ValueLatticeElement::getOverdefined(); in getValueFromMetadata()
1601 ValueLatticeElement PtrVal = getValueState(I.getOperand(0)); in visitLoadInst()
1605 ValueLatticeElement &IV = ValueState[&I]; in visitLoadInst()
1664 ValueLatticeElement State = getValueState(A); in handleCallOverdefined()
1708 ValueLatticeElement CallArg = getStructValueState(*CAI, i); in handleCallArguments()
1727 ValueLatticeElement CopyOfVal = getValueState(CopyOf); in handleCallResult()
1747 ValueLatticeElement CondVal = getValueState(OtherOp); in handleCallResult()
1748 ValueLatticeElement &IV = ValueState[&CB]; in handleCallResult()
1776 ValueLatticeElement::getRange(NewCR, /*MayIncludeUndef*/ false)); in handleCallResult()
1789 ValueLatticeElement::getNot(CondVal.getConstant())); in handleCallResult()
1802 const ValueLatticeElement &State = getValueState(Op); in handleCallResult()
1810 return (void)mergeInValue(II, ValueLatticeElement::getRange(Result)); in handleCallResult()
1915 ValueLatticeElement &LV = getStructValueState(&I, i); in resolvedUndef()
1924 ValueLatticeElement &LV = getValueState(&I); in resolvedUndef()
2054 std::vector<ValueLatticeElement>
2067 const ValueLatticeElement &SCCPSolver::getLatticeValueFor(Value *V) const { in getLatticeValueFor()
2071 const MapVector<Function *, ValueLatticeElement> &
2076 const DenseMap<GlobalVariable *, ValueLatticeElement> &
2091 Constant *SCCPSolver::getConstant(const ValueLatticeElement &LV, in getConstant()