|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
include/llvm/ADT/DenseMap.h 40 struct DenseMapPair : public std::pair<KeyT, ValueT> {
45 ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
46 const ValueT &getSecond() const { return std::pair<KeyT, ValueT>::second; }
66 using mapped_type = ValueT;
69 using iterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT>;
71 DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT, true>;
185 ValueT lookup(const_arg_type_t<KeyT> Val) const {
195 std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
202 std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
219 InsertIntoBucket(TheBucket, std::move(Key), std::forward<Ts>(Args)...);
249 std::pair<iterator, bool> insert_as(std::pair<KeyT, ValueT> &&KV,
299 ValueT &operator[](const KeyT &Key) {
311 ValueT &operator[](KeyT &&Key) {
380 ::new (&DestBucket->getSecond()) ValueT(std::move(B->getSecond()));
392 const DenseMapBase<OtherBaseT, KeyT, ValueT, KeyInfoT, BucketT> &other) {
516 ValueArgs &&... Values) {
520 ::new (&TheBucket->getSecond()) ValueT(std::forward<ValueArgs>(Values)...);
520 ::new (&TheBucket->getSecond()) ValueT(std::forward<ValueArgs>(Values)...);
526 ValueT &&Value, LookupKeyT &Lookup) {
684 class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
685 KeyT, ValueT, KeyInfoT, BucketT> {
690 using BaseT = DenseMapBase<DenseMap, KeyT, ValueT, KeyInfoT, BucketT>;
852 SmallDenseMap<KeyT, ValueT, InlineBuckets, KeyInfoT, BucketT>, KeyT,
853 ValueT, KeyInfoT, BucketT> {
1031 ::new (&TmpEnd->getSecond()) ValueT(std::move(P->getSecond()));
1163 using ConstIterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, true>;
1199 const DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConstSrc> &I)
include/llvm/Analysis/ValueLattice.h 82 ValueLatticeElement(const ValueLatticeElement &Other) : Tag(undefined) {
88 ValueLatticeElement &operator=(const ValueLatticeElement &Other) {
88 ValueLatticeElement &operator=(const ValueLatticeElement &Other) {
119 static ValueLatticeElement get(Constant *C) {
120 ValueLatticeElement Res;
125 static ValueLatticeElement getNot(Constant *C) {
126 ValueLatticeElement Res;
131 static ValueLatticeElement getRange(ConstantRange CR) {
132 ValueLatticeElement Res;
136 static ValueLatticeElement getOverdefined() {
137 ValueLatticeElement Res;
240 bool mergeIn(const ValueLatticeElement &RHS, const DataLayout &DL) {
294 const ValueLatticeElement &Other) const {
319 raw_ostream &operator<<(raw_ostream &OS, const ValueLatticeElement &Val);
lib/Analysis/LazyValueInfo.cpp 66 static bool hasSingleValue(const ValueLatticeElement &Val) {
91 static ValueLatticeElement intersect(const ValueLatticeElement &A,
91 static ValueLatticeElement intersect(const ValueLatticeElement &A,
92 const ValueLatticeElement &B) {
124 return ValueLatticeElement::getRange(std::move(Range));
162 SmallDenseMap<PoisoningVH<BasicBlock>, ValueLatticeElement, 4> BlockVals;
181 const ValueLatticeElement &Result) {
219 ValueLatticeElement getCachedValueInfo(Value *V, BasicBlock *BB) const {
221 return ValueLatticeElement::getOverdefined();
406 ValueLatticeElement getBlockValue(Value *Val, BasicBlock *BB);
408 ValueLatticeElement &Result, Instruction *CxtI = nullptr);
415 bool solveBlockValueImpl(ValueLatticeElement &Res, Value *Val,
417 bool solveBlockValueNonLocal(ValueLatticeElement &BBLV, Value *Val,
419 bool solveBlockValuePHINode(ValueLatticeElement &BBLV, PHINode *PN,
421 bool solveBlockValueSelect(ValueLatticeElement &BBLV, SelectInst *S,
426 ValueLatticeElement &BBLV, Instruction *I, BasicBlock *BB,
429 bool solveBlockValueBinaryOp(ValueLatticeElement &BBLV, BinaryOperator *BBI,
431 bool solveBlockValueCast(ValueLatticeElement &BBLV, CastInst *CI,
434 ValueLatticeElement &BBLV, WithOverflowInst *WO, BasicBlock *BB);
435 bool solveBlockValueSaturatingIntrinsic(ValueLatticeElement &BBLV,
437 bool solveBlockValueIntrinsic(ValueLatticeElement &BBLV, IntrinsicInst *II,
439 bool solveBlockValueExtractValue(ValueLatticeElement &BBLV,
442 ValueLatticeElement &BBLV,
450 ValueLatticeElement getValueInBlock(Value *V, BasicBlock *BB,
456 ValueLatticeElement getValueAt(Value *V, Instruction *CxtI);
460 ValueLatticeElement getValueOnEdge(Value *V, BasicBlock *FromBB,
531 ValueLatticeElement::getOverdefined());
568 ValueLatticeElement LazyValueInfoImpl::getBlockValue(Value *Val,
572 return ValueLatticeElement::get(VC);
577 static ValueLatticeElement getFromRangeMetadata(Instruction *BBI) {
585 return ValueLatticeElement::getRange(
591 return ValueLatticeElement::getOverdefined();
611 ValueLatticeElement Res;
620 bool LazyValueInfoImpl::solveBlockValueImpl(ValueLatticeElement &Res,
644 Res = ValueLatticeElement::getNot(ConstantPointerNull::get(PT));
716 bool LazyValueInfoImpl::solveBlockValueNonLocal(ValueLatticeElement &BBLV,
718 ValueLatticeElement Result; // Start Undefined.
731 Result = ValueLatticeElement::getNot(ConstantPointerNull::get(PTy));
733 Result = ValueLatticeElement::getOverdefined();
749 ValueLatticeElement EdgeResult;
766 Result = ValueLatticeElement::getNot(ConstantPointerNull::get(PTy));
780 bool LazyValueInfoImpl::solveBlockValuePHINode(ValueLatticeElement &BBLV,
782 ValueLatticeElement Result; // Start Undefined.
790 ValueLatticeElement EdgeResult;
817 static ValueLatticeElement getValueFromCondition(Value *Val, Value *Cond,
823 Value *Val, ValueLatticeElement &BBLV, Instruction *BBI) {
854 bool LazyValueInfoImpl::solveBlockValueSelect(ValueLatticeElement &BBLV,
861 BBLV = ValueLatticeElement::getOverdefined();
864 ValueLatticeElement TrueVal = getBlockValue(SI->getTrueValue(), BB);
868 BBLV = ValueLatticeElement::getOverdefined();
875 BBLV = ValueLatticeElement::getOverdefined();
878 ValueLatticeElement FalseVal = getBlockValue(SI->getFalseValue(), BB);
882 BBLV = ValueLatticeElement::getOverdefined();
910 BBLV = ValueLatticeElement::getRange(ResultCR);
916 BBLV = ValueLatticeElement::getRange(TrueCR.abs());
920 BBLV = ValueLatticeElement::getRange(FalseCR.abs());
928 BBLV = ValueLatticeElement::getRange(Zero.sub(TrueCR.abs()));
932 BBLV = ValueLatticeElement::getRange(Zero.sub(FalseCR.abs()));
974 ValueLatticeElement::getNot(ResNot));
982 ValueLatticeElement::getNot(ResNot));
989 ValueLatticeElement Result; // Start Undefined.
1007 ValueLatticeElement Val = getBlockValue(I->getOperand(Op), BB);
1015 bool LazyValueInfoImpl::solveBlockValueCast(ValueLatticeElement &BBLV,
1021 BBLV = ValueLatticeElement::getOverdefined();
1038 BBLV = ValueLatticeElement::getOverdefined();
1056 BBLV = ValueLatticeElement::getRange(LHSRange.castOp(CI->getOpcode(),
1062 ValueLatticeElement &BBLV, Instruction *I, BasicBlock *BB,
1077 BBLV = ValueLatticeElement::getRange(OpFn(LHSRange, RHSRange));
1081 bool LazyValueInfoImpl::solveBlockValueBinaryOp(ValueLatticeElement &BBLV,
1091 BBLV = ValueLatticeElement::getOverdefined();
1116 ValueLatticeElement &BBLV, WithOverflowInst *WO, BasicBlock *BB) {
1124 ValueLatticeElement &BBLV, SaturatingInst *SI, BasicBlock *BB) {
1151 bool LazyValueInfoImpl::solveBlockValueIntrinsic(ValueLatticeElement &BBLV,
1159 BBLV = ValueLatticeElement::getOverdefined();
1164 ValueLatticeElement &BBLV, ExtractValueInst *EVI, BasicBlock *BB) {
1177 BBLV = ValueLatticeElement::getOverdefined();
1186 BBLV = ValueLatticeElement::getOverdefined();
1190 static ValueLatticeElement getValueFromICmpCondition(Value *Val, ICmpInst *ICI,
1201 return ValueLatticeElement::get(cast<Constant>(RHS));
1203 return ValueLatticeElement::getNot(cast<Constant>(RHS));
1208 return ValueLatticeElement::getOverdefined();
1247 return ValueLatticeElement::getRange(std::move(TrueValues));
1250 return ValueLatticeElement::getOverdefined();
1255 static ValueLatticeElement getValueFromOverflowCondition(
1262 return ValueLatticeElement::getOverdefined();
1272 return ValueLatticeElement::getRange(NWR);
1275 static ValueLatticeElement
1277 DenseMap<Value*, ValueLatticeElement> &Visited);
1279 static ValueLatticeElement
1281 DenseMap<Value*, ValueLatticeElement> &Visited) {
1297 return ValueLatticeElement::getOverdefined();
1306 return ValueLatticeElement::getOverdefined();
1312 static ValueLatticeElement
1314 DenseMap<Value*, ValueLatticeElement> &Visited) {
1319 auto Result = getValueFromConditionImpl(Val, Cond, isTrueDest, Visited);
1324 ValueLatticeElement getValueFromCondition(Value *Val, Value *Cond,
1327 DenseMap<Value*, ValueLatticeElement> Visited;
1348 static ValueLatticeElement constantFoldUser(User *Usr, Value *Op,
1359 return ValueLatticeElement::getRange(ConstantRange(C->getValue()));
1370 return ValueLatticeElement::getRange(ConstantRange(C->getValue()));
1373 return ValueLatticeElement::getOverdefined();
1380 BasicBlock *BBTo, ValueLatticeElement &Result) {
1396 Result = ValueLatticeElement::get(ConstantInt::get(
1434 ValueLatticeElement OpLatticeVal =
1477 ValueLatticeElement EdgeLatticeVal =
1495 Result = ValueLatticeElement::getRange(std::move(EdgesVals));
1505 ValueLatticeElement &Result,
1509 Result = ValueLatticeElement::get(VC);
1513 ValueLatticeElement LocalResult;
1517 LocalResult = ValueLatticeElement::getOverdefined();
1534 ValueLatticeElement InBlock = getBlockValue(Val, BBFrom);
1551 ValueLatticeElement LazyValueInfoImpl::getValueInBlock(Value *V, BasicBlock *BB,
1561 ValueLatticeElement Result = getBlockValue(V, BB);
1568 ValueLatticeElement LazyValueInfoImpl::getValueAt(Value *V, Instruction *CxtI) {
1573 return ValueLatticeElement::get(C);
1575 ValueLatticeElement Result = ValueLatticeElement::getOverdefined();
1575 ValueLatticeElement Result = ValueLatticeElement::getOverdefined();
1584 ValueLatticeElement LazyValueInfoImpl::
1591 ValueLatticeElement Result;
1701 ValueLatticeElement Result =
1719 ValueLatticeElement Result =
1738 ValueLatticeElement Result =
1757 ValueLatticeElement Result =
1772 getPredicateResult(unsigned Pred, Constant *C, const ValueLatticeElement &Val,
1843 ValueLatticeElement Result =
1864 ValueLatticeElement Result = getImpl(PImpl, AC, &DL, DT).getValueAt(V, CxtI);
1988 ValueLatticeElement Result = LVIImpl->getValueInBlock(
2013 ValueLatticeElement Result = LVIImpl->getValueInBlock(
lib/Analysis/ValueLattice.cpp 12 raw_ostream &operator<<(raw_ostream &OS, const ValueLatticeElement &Val) {
lib/Transforms/Scalar/SCCP.cpp 178 ValueLatticeElement toValueLattice() const {
180 return ValueLatticeElement::getOverdefined();
182 return ValueLatticeElement::get(getConstant());
198 DenseMap<Value *, ValueLatticeElement> ParamState;
509 ValueLatticeElement &getParamState(Value *V) {
512 std::pair<DenseMap<Value*, ValueLatticeElement>::iterator, bool>
514 ValueLatticeElement &LV = PI.first->second;
1073 ValueLatticeElement V1State = (V1Param != ParamState.end())
1078 ValueLatticeElement V2State = V2Param != ParamState.end()
unittests/Analysis/ValueLatticeTest.cpp 51 auto LV1 = ValueLatticeElement::get(C1);
51 auto LV1 = ValueLatticeElement::get(C1);
70 ValueLatticeElement LV2;
94 auto LV1 = ValueLatticeElement::get(C1);
94 auto LV1 = ValueLatticeElement::get(C1);
104 auto LV2 =
105 ValueLatticeElement::getRange({APInt(32, 10, true), APInt(32, 20, true)});
114 auto LV3 =
115 ValueLatticeElement::getRange({APInt(32, 15, true), APInt(32, 19, true)});
124 auto LV4 =
125 ValueLatticeElement::getRange({APInt(32, 15, true), APInt(32, 25, true)});
139 auto LV1 = ValueLatticeElement::get(C1);
139 auto LV1 = ValueLatticeElement::get(C1);
140 auto LV2 = ValueLatticeElement::get(C1);
140 auto LV2 = ValueLatticeElement::get(C1);
165 auto LV1 = ValueLatticeElement::get(UndefValue::get(I32Ty));
165 auto LV1 = ValueLatticeElement::get(UndefValue::get(I32Ty));
166 auto LV2 =
167 ValueLatticeElement::getRange({APInt(32, 10, true), APInt(32, 20, true)});
176 auto LV3 = ValueLatticeElement::get(ConstantFP::get(FloatTy, 1.0));
176 auto LV3 = ValueLatticeElement::get(ConstantFP::get(FloatTy, 1.0));
usr/include/c++/7.4.0/bits/move.h 72 constexpr _Tp&&
73 forward(typename std::remove_reference<_Tp>::type& __t) noexcept
83 constexpr _Tp&&
84 forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
98 move(_Tp&& __t) noexcept
usr/include/c++/7.4.0/bits/stl_pair.h 101 is_constructible<_T2, const _U2&>>::value;
101 is_constructible<_T2, const _U2&>>::value;
108 is_convertible<const _U2&, _T2>>::value;
108 is_convertible<const _U2&, _T2>>::value;
115 is_constructible<_T2, _U2&&>>::value;
115 is_constructible<_T2, _U2&&>>::value;
122 is_convertible<_U2&&, _T2>>::value;
122 is_convertible<_U2&&, _T2>>::value;
129 is_convertible<_U2&&, _T2>>;
129 is_convertible<_U2&&, _T2>>;
134 is_constructible<_T2, _U2&&>,
134 is_constructible<_T2, _U2&&>,
143 is_convertible<const _U2&, _T2>>;
143 is_convertible<const _U2&, _T2>>;
148 is_constructible<_T2, const _U2&&>,
148 is_constructible<_T2, const _U2&&>,
209 : private __pair_base<_T1, _T2>
212 typedef _T2 second_type; /// @c second_type is the second bound type
215 _T2 second; /// @c second is a copy of the second object
252 using _PCCP = _PCC<true, _T1, _T2>;
260 constexpr pair(const _T1& __a, const _T2& __b)
269 explicit constexpr pair(const _T1& __a, const _T2& __b)
283 _T1, _T2>;
311 constexpr pair(_U1&& __x, const _T2& __y)
318 explicit constexpr pair(_U1&& __x, const _T2& __y)
325 constexpr pair(const _T1& __x, _U2&& __y)
341 constexpr pair(_U1&& __x, _U2&& __y)
342 : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
380 is_copy_assignable<_T2>>::value,
391 is_move_assignable<_T2>>::value,
403 is_assignable<_T2&, const _U2&>>::value,
403 is_assignable<_T2&, const _U2&>>::value,
405 operator=(const pair<_U1, _U2>& __p)
414 is_assignable<_T2&, _U2&&>>::value,
414 is_assignable<_T2&, _U2&&>>::value,
416 operator=(pair<_U1, _U2>&& __p)
523 typename __decay_and_strip<_T2>::__type>
524 make_pair(_T1&& __x, _T2&& __y)
527 typedef typename __decay_and_strip<_T2>::__type __ds_type2;
529 return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
usr/include/c++/7.4.0/type_traits 215 : public __is_void_helper<typename remove_cv<_Tp>::type>::type
326 : public __is_integral_helper<typename remove_cv<_Tp>::type>::type
354 : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
381 : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
567 : public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type
581 : public __or_<is_lvalue_reference<_Tp>,
582 is_rvalue_reference<_Tp>>::type
588 : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
588 : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
601 : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
601 : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
602 is_void<_Tp>>>::type
611 : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
611 : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
611 : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
612 is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
612 is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
631 : public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type
638 : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
638 : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
762 typename add_rvalue_reference<_Tp>::type declval() noexcept;
777 : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
777 : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
798 typedef decltype(__test<_Tp>(0)) type;
811 remove_all_extents<_Tp>::type>::type
825 : public __is_destructible_safe<_Tp>::type
889 typedef decltype(__test<_Tp>(0)) type;
894 : public __and_<__not_<is_void<_Tp>>,
895 __is_default_constructible_impl<_Tp>>
915 : public __is_default_constructible_atom<_Tp>::type
921 : public __is_default_constructible_safe<_Tp>::type
984 typedef decltype(__test<_Tp, _Arg>(0)) type;
989 : public __and_<is_destructible<_Tp>,
990 __is_direct_constructible_impl<_Tp, _Arg>>
1072 __is_direct_constructible_ref_cast<_Tp, _Arg>,
1073 __is_direct_constructible_new_safe<_Tp, _Arg>
1079 : public __is_direct_constructible_new<_Tp, _Arg>::type
1119 : public __is_direct_constructible<_Tp, _Arg>
1130 : public __is_constructible_impl<_Tp, _Args...>::type
1286 : public is_assignable<_Tp&, const _Tp&>
1286 : public is_assignable<_Tp&, const _Tp&>
1292 : public __is_copy_assignable_impl<_Tp>
1304 : public is_assignable<_Tp&, _Tp&&>
1304 : public is_assignable<_Tp&, _Tp&&>
1310 : public __is_move_assignable_impl<_Tp>
1377 static void __helper(const _Tp&);
1380 static true_type __test(const _Tp&,
1381 decltype(__helper<const _Tp&>({}))* = 0);
1390 typedef decltype(__test(declval<_Tp>())) type;
1395 : public __is_implicitly_default_constructible_impl<_Tp>::type
1400 : public __and_<is_default_constructible<_Tp>,
1401 __is_implicitly_default_constructible_safe<_Tp>>
1526 static void __test_aux(_To1);
1538 typedef decltype(__test<_From, _To>(0)) type;
1545 : public __is_convertible_helper<_From, _To>::type
1554 { typedef _Tp type; };
1563 { typedef _Tp type; };
1574 remove_const<typename remove_volatile<_Tp>::type>::type type;
1629 { typedef _Tp type; };
1633 { typedef _Tp type; };
1659 { typedef _Tp&& type; };
1664 : public __add_rvalue_reference_helper<_Tp>
1955 { typedef _Tp type; };
2104 { typedef typename remove_cv<_Up>::type __type; };
2118 typedef typename remove_reference<_Tp>::type __remove_type;
2131 typedef _Tp __type;
2144 typename decay<_Tp>::type>::__type __type;