reference, declarationdefinition
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;