reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
  250 class UnknownVal : public DefinedOrUnknownSVal {
  262 class DefinedSVal : public DefinedOrUnknownSVal {

References

include/llvm/ADT/Optional.h
  144     T value;
  160   explicit OptionalStorage(in_place_t, Args &&... args)
  172   T &getValue() LLVM_LVALUE_FUNCTION noexcept {
  176   T const &getValue() const LLVM_LVALUE_FUNCTION noexcept {
  181   T &&getValue() && noexcept {
  216   optional_detail::OptionalStorage<T> Storage;
  219   using value_type = T;
  224   Optional(const T &y) : Storage(optional_detail::in_place_t{}, y) {}
  227   Optional(T &&y) : Storage(optional_detail::in_place_t{}, std::move(y)) {}
  230   Optional &operator=(T &&y) {
  241   static inline Optional create(const T *y) {
  245   Optional &operator=(const T &y) {
  253   const T *getPointer() const { return &Storage.getValue(); }
  254   T *getPointer() { return &Storage.getValue(); }
  255   const T &getValue() const LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  256   T &getValue() LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  260   const T *operator->() const { return getPointer(); }
  261   T *operator->() { return getPointer(); }
  262   const T &operator*() const LLVM_LVALUE_FUNCTION { return getValue(); }
  263   T &operator*() LLVM_LVALUE_FUNCTION { return getValue(); }
  266   constexpr T getValueOr(U &&value) const LLVM_LVALUE_FUNCTION {
  271   T &&getValue() && { return std::move(Storage.getValue()); }
  272   T &&operator*() && { return std::move(Storage.getValue()); }
  275   T getValueOr(U &&value) && {
include/llvm/Support/type_traits.h
   91     T t;
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  145       std::is_copy_constructible<detail::trivial_helper<T>>::value;
  147       !std::is_copy_constructible<T>::value;
  151       std::is_move_constructible<detail::trivial_helper<T>>::value;
  153       !std::is_move_constructible<T>::value;
  157       is_copy_assignable<detail::trivial_helper<T>>::value;
  159       !is_copy_assignable<T>::value;
  163       is_move_assignable<detail::trivial_helper<T>>::value;
  165       !is_move_assignable<T>::value;
  169       std::is_destructible<detail::trivial_helper<T>>::value;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
  453   virtual DefinedOrUnknownSVal getExtent(SValBuilder &svalBuilder) const {
  494   DefinedOrUnknownSVal getExtent(SValBuilder &svalBuilder) const override;
  555   DefinedOrUnknownSVal getExtent(SValBuilder &svalBuilder) const override;
  785   DefinedOrUnknownSVal getExtent(SValBuilder &svalBuilder) const override;
  820   DefinedOrUnknownSVal getExtent(SValBuilder &svalBuilder) const override;
 1024   DefinedOrUnknownSVal getExtent(SValBuilder &svalBuilder) const override;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
  182   LLVM_NODISCARD ProgramStateRef assume(DefinedOrUnknownSVal cond,
  191   assume(DefinedOrUnknownSVal cond) const;
  194   assumeInBound(DefinedOrUnknownSVal idx, DefinedOrUnknownSVal upperBound,
  194   assumeInBound(DefinedOrUnknownSVal idx, DefinedOrUnknownSVal upperBound,
  203   LLVM_NODISCARD ProgramStateRef assumeInclusiveRange(DefinedOrUnknownSVal Val,
  214   assumeInclusiveRange(DefinedOrUnknownSVal Val, const llvm::APSInt &From,
  658 inline ProgramStateRef ProgramState::assume(DefinedOrUnknownSVal Cond,
  668 ProgramState::assume(DefinedOrUnknownSVal Cond) const {
  677     DefinedOrUnknownSVal Val, const llvm::APSInt &From, const llvm::APSInt &To,
  689 ProgramState::assumeInclusiveRange(DefinedOrUnknownSVal Val,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  152   DefinedOrUnknownSVal evalEQ(ProgramStateRef state, DefinedOrUnknownSVal lhs,
  152   DefinedOrUnknownSVal evalEQ(ProgramStateRef state, DefinedOrUnknownSVal lhs,
  153                               DefinedOrUnknownSVal rhs);
  195   DefinedOrUnknownSVal makeZeroVal(QualType type);
  198   DefinedOrUnknownSVal getRegionValueSymbolVal(const TypedValueRegion *region);
  206   DefinedOrUnknownSVal conjureSymbolVal(const void *symbolTag,
  210   DefinedOrUnknownSVal conjureSymbolVal(const void *symbolTag,
  215   DefinedOrUnknownSVal conjureSymbolVal(const Stmt *stmt,
  223   DefinedOrUnknownSVal getConjuredHeapSymbolVal(const Expr *E,
  227   DefinedOrUnknownSVal getDerivedRegionValueSymbolVal(
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
  103   T castAs() const {
  111   Optional<T> getAs() const {
  112     if (!T::isKind(*this))
  250 class UnknownVal : public DefinedOrUnknownSVal {
  262 class DefinedSVal : public DefinedOrUnknownSVal {
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
  153   virtual DefinedOrUnknownSVal getSizeInElements(ProgramStateRef state,
tools/clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp
   47   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
   47   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
   57   DefinedOrUnknownSVal NumElements
tools/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp
  180     DefinedOrUnknownSVal extentVal =
tools/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
  908   return State->assume(Val.castAs<DefinedOrUnknownSVal>(), true);
 1180   if (Optional<DefinedOrUnknownSVal> DV = Val.getAs<DefinedOrUnknownSVal>())
 1180   if (Optional<DefinedOrUnknownSVal> DV = Val.getAs<DefinedOrUnknownSVal>())
tools/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp
   52     state = state->assume(Arg.castAs<DefinedOrUnknownSVal>(), true);
   93     DefinedOrUnknownSVal Extent = R->getExtent(svalBuilder);
   94     DefinedOrUnknownSVal extentMatchesSizeArg =
   95       svalBuilder.evalEQ(state, Extent, Size.castAs<DefinedOrUnknownSVal>());
tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  275   DefinedOrUnknownSVal zero = svalBuilder.makeZeroVal(Ty);
  335   DefinedOrUnknownSVal Size = Extent.castAs<DefinedOrUnknownSVal>();
  335   DefinedOrUnknownSVal Size = Extent.castAs<DefinedOrUnknownSVal>();
  338   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
  338   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
  499   Optional<DefinedOrUnknownSVal> reverseTest =
  500       reverse.getAs<DefinedOrUnknownSVal>();
  544   Optional<DefinedOrUnknownSVal> OverlapTest =
  545       Overlap.getAs<DefinedOrUnknownSVal>();
  697       state->assume(willOverflow.castAs<DefinedOrUnknownSVal>());
  784       state = state->assume(evalLength.castAs<DefinedOrUnknownSVal>(), true);
  942   DefinedOrUnknownSVal ExtentSize = Extent.castAs<DefinedOrUnknownSVal>();
  942   DefinedOrUnknownSVal ExtentSize = Extent.castAs<DefinedOrUnknownSVal>();
  945   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
  945   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
 1075     DefinedOrUnknownSVal Extent = SubReg->getExtent(svalBuilder);
 1122           State->assume(NewStrLenGESize.castAs<DefinedOrUnknownSVal>(), true),
 1308     DefinedOrUnknownSVal LV =
 1309         state->getSVal(Left, LCtx).castAs<DefinedOrUnknownSVal>();
 1310     DefinedOrUnknownSVal RV =
 1311         state->getSVal(Right, LCtx).castAs<DefinedOrUnknownSVal>();
 1314     DefinedOrUnknownSVal SameBuf = svalBuilder.evalEQ(state, LV, RV);
 1404   DefinedOrUnknownSVal result = UnknownVal();
 1426               .castAs<DefinedOrUnknownSVal>());
 1449                                   .castAs<DefinedOrUnknownSVal>(), true);
 1455                                   .castAs<DefinedOrUnknownSVal>(), true);
 1461     result = strLength.castAs<DefinedOrUnknownSVal>();
 1606               .castAs<DefinedOrUnknownSVal>());
 1694               copiedLessThanBound.castAs<DefinedOrUnknownSVal>(), true);
 1706               copiedLessThanSrc.castAs<DefinedOrUnknownSVal>(), true);
 1765           state = state->assume(sourceInResult.castAs<DefinedOrUnknownSVal>(),
 1778               state->assume(destInResult.castAs<DefinedOrUnknownSVal>(), true);
 1937   DefinedOrUnknownSVal LV = s1Val.castAs<DefinedOrUnknownSVal>();
 1937   DefinedOrUnknownSVal LV = s1Val.castAs<DefinedOrUnknownSVal>();
 1938   DefinedOrUnknownSVal RV = s2Val.castAs<DefinedOrUnknownSVal>();
 1938   DefinedOrUnknownSVal RV = s2Val.castAs<DefinedOrUnknownSVal>();
 1942   DefinedOrUnknownSVal SameBuf = svalBuilder.evalEQ(state, LV, RV);
 2301     DefinedOrUnknownSVal strLength =
 2302       getCStringLength(C, state, Init, StrVal).castAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
  331   std::tie(StNonNull, StNull) = State->assume(L.castAs<DefinedOrUnknownSVal>());
  386         State->assume(V.castAs<DefinedOrUnknownSVal>());
tools/clang/lib/StaticAnalyzer/Checkers/CastValueChecker.cpp
   38                          DefinedOrUnknownSVal, CheckerContext &)>;
   76   void evalCast(const CallEvent &Call, DefinedOrUnknownSVal DV,
   78   void evalDynCast(const CallEvent &Call, DefinedOrUnknownSVal DV,
   80   void evalCastOrNull(const CallEvent &Call, DefinedOrUnknownSVal DV,
   82   void evalDynCastOrNull(const CallEvent &Call, DefinedOrUnknownSVal DV,
   84   void evalCastAs(const CallEvent &Call, DefinedOrUnknownSVal DV,
   86   void evalGetAs(const CallEvent &Call, DefinedOrUnknownSVal DV,
   88   void evalIsa(const CallEvent &Call, DefinedOrUnknownSVal DV,
   90   void evalIsaAndNonNull(const CallEvent &Call, DefinedOrUnknownSVal DV,
  155 static void addCastTransition(const CallEvent &Call, DefinedOrUnknownSVal DV,
  217                                     DefinedOrUnknownSVal DV,
  263                                           DefinedOrUnknownSVal DV,
  271                                        DefinedOrUnknownSVal DV,
  278                                     DefinedOrUnknownSVal DV,
  288 void CastValueChecker::evalCast(const CallEvent &Call, DefinedOrUnknownSVal DV,
  294                                    DefinedOrUnknownSVal DV,
  301                                       DefinedOrUnknownSVal DV,
  308                                          DefinedOrUnknownSVal DV,
  320                                        DefinedOrUnknownSVal DV,
  328                                     DefinedOrUnknownSVal DV,
  335                                   DefinedOrUnknownSVal DV,
  340 void CastValueChecker::evalGetAs(const CallEvent &Call, DefinedOrUnknownSVal DV,
  350 void CastValueChecker::evalIsa(const CallEvent &Call, DefinedOrUnknownSVal DV,
  366                                          DefinedOrUnknownSVal DV,
  394   Optional<DefinedOrUnknownSVal> DV;
  407     DV = Call.getArgSVal(0).getAs<DefinedOrUnknownSVal>();
  416     DV = Call.getArgSVal(0).getAs<DefinedOrUnknownSVal>();
  424     DV = InstanceCall->getCXXThisVal().getAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Checkers/CheckObjCDealloc.cpp
  941       M.getState()->assume(Arg.castAs<DefinedOrUnknownSVal>());
tools/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp
  211   DefinedOrUnknownSVal location = l.castAs<DefinedOrUnknownSVal>();
  211   DefinedOrUnknownSVal location = l.castAs<DefinedOrUnknownSVal>();
  263   std::tie(StNonNull, StNull) = State->assume(V.castAs<DefinedOrUnknownSVal>());
tools/clang/lib/StaticAnalyzer/Checkers/EnumCastOutOfRangeChecker.cpp
   35   const DefinedOrUnknownSVal CompareValue;
   41                              const DefinedOrUnknownSVal CompareValue)
   45     DefinedOrUnknownSVal EnumDeclValue = SVB.makeIntVal(EnumDeclInitValue);
   46     DefinedOrUnknownSVal ElemEqualsValueToCast =
  111   const llvm::Optional<DefinedOrUnknownSVal> ValueToCast =
  112       C.getSVal(CE->getSubExpr()).getAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
  120     State->assume(AssertionVal.castAs<DefinedOrUnknownSVal>());
tools/clang/lib/StaticAnalyzer/Checkers/GTestChecker.cpp
  273   if (!Val1.getAs<DefinedOrUnknownSVal>() ||
  274       !Val2.getAs<DefinedOrUnknownSVal>())
  277   auto ValuesEqual =
  278       C.getSValBuilder().evalEQ(State, Val1.castAs<DefinedOrUnknownSVal>(),
  279                                 Val2.castAs<DefinedOrUnknownSVal>());
tools/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp
  163     const auto &Size = Ctx.getStoreManager().getSizeInElements(
tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
 1405     DefinedOrUnknownSVal Extent = Region->getExtent(svalBuilder);
 1411     DefinedOrUnknownSVal extentMatchesSize = svalBuilder.evalEQ(
 1412         State, Extent, SizeInBytes.castAs<DefinedOrUnknownSVal>());
 1540   if (Optional<DefinedOrUnknownSVal> DefinedSize =
 1541           Size.getAs<DefinedOrUnknownSVal>()) {
 1543     DefinedOrUnknownSVal Extent = R->getExtent(svalBuilder);
 1544     DefinedOrUnknownSVal extentMatchesSize =
 1758   if (!ArgVal.getAs<DefinedOrUnknownSVal>())
 1760   DefinedOrUnknownSVal location = ArgVal.castAs<DefinedOrUnknownSVal>();
 1760   DefinedOrUnknownSVal location = ArgVal.castAs<DefinedOrUnknownSVal>();
 2407   if (!Arg0Val.getAs<DefinedOrUnknownSVal>())
 2409   DefinedOrUnknownSVal arg0Val = Arg0Val.castAs<DefinedOrUnknownSVal>();
 2409   DefinedOrUnknownSVal arg0Val = Arg0Val.castAs<DefinedOrUnknownSVal>();
 2413   DefinedOrUnknownSVal PtrEQ =
 2423   if (!TotalSize.getAs<DefinedOrUnknownSVal>())
 2427   DefinedOrUnknownSVal SizeZero =
 2428     svalBuilder.evalEQ(State, TotalSize.castAs<DefinedOrUnknownSVal>(),
tools/clang/lib/StaticAnalyzer/Checkers/NonnullGlobalConstantsChecker.cpp
   78     Optional<DefinedOrUnknownSVal> Constr = V.getAs<DefinedOrUnknownSVal>();
   78     Optional<DefinedOrUnknownSVal> Constr = V.getAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp
  262 static NullConstraint getNullConstraint(DefinedOrUnknownSVal Val,
  535   auto RetSVal = C.getSVal(S).getAs<DefinedOrUnknownSVal>();
  660     auto ArgSVal = Call.getArgSVal(Idx++).getAs<DefinedOrUnknownSVal>();
  793   if (auto DefOrUnknown = Receiver.getAs<DefinedOrUnknownSVal>()) {
  951   auto RegionSVal = C.getSVal(CE).getAs<DefinedOrUnknownSVal>();
 1068   auto ValDefOrUnknown = V.getAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountChecker.cpp
  545     if (auto DL = L.getAs<DefinedOrUnknownSVal>()) {
  953       if (auto L = RetVal.getAs<DefinedOrUnknownSVal>())
tools/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp
   49   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
   49   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
   57   DefinedOrUnknownSVal NumElements
tools/clang/lib/StaticAnalyzer/Checkers/ReturnUndefChecker.cpp
   32                       DefinedOrUnknownSVal RetVal) const;
   75     checkReference(C, RetE, RetVal.castAs<DefinedOrUnknownSVal>());
  104                                         DefinedOrUnknownSVal RetVal) const {
tools/clang/lib/StaticAnalyzer/Checkers/ReturnValueChecker.cpp
   74   auto ReturnDV = ReturnV.getAs<DefinedOrUnknownSVal>();
  113   State = State->assume(ReturnV.castAs<DefinedOrUnknownSVal>(), ExpectedValue);
tools/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
  334                        .getAs<DefinedOrUnknownSVal>())
tools/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp
   52   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
   52   DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>();
   53   DefinedOrUnknownSVal NumElements = C.getStoreManager().getSizeInElements(
tools/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp
  139   DefinedOrUnknownSVal Zero = svalBuilder.makeZeroVal(Ty);
  170   DefinedOrUnknownSVal Extent =
  172   DefinedOrUnknownSVal ArraySize = ArraySizeVal.castAs<DefinedOrUnknownSVal>();
  172   DefinedOrUnknownSVal ArraySize = ArraySizeVal.castAs<DefinedOrUnknownSVal>();
  173   DefinedOrUnknownSVal sizeIsKnown =
tools/clang/lib/StaticAnalyzer/Checkers/VforkChecker.cpp
  155   Optional<DefinedOrUnknownSVal> DVal =
  156     VforkRetVal.getAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  262       Optional<DefinedOrUnknownSVal> Constraint =
  263           Constraint_untested.getAs<DefinedOrUnknownSVal>();
 2350   DefinedOrUnknownSVal CondV = CondV_untested.castAs<DefinedOrUnknownSVal>();
 2350   DefinedOrUnknownSVal CondV = CondV_untested.castAs<DefinedOrUnknownSVal>();
 2495     state = state->assume(V.castAs<DefinedOrUnknownSVal>(), true);
tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
  477             DefinedOrUnknownSVal NewSym =
 1124       DefinedOrUnknownSVal SymVal =
 1133         DefinedOrUnknownSVal Constraint =
tools/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
  720           State = State->assume(RetVal.castAs<DefinedOrUnknownSVal>(), true);
  795           if (auto dSymVal = symVal.getAs<DefinedOrUnknownSVal>())
tools/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
  190       DefinedOrUnknownSVal receiverVal =
  191           recVal.castAs<DefinedOrUnknownSVal>();
tools/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
  166 DefinedOrUnknownSVal TypedValueRegion::getExtent(SValBuilder &svalBuilder) const {
  180 DefinedOrUnknownSVal FieldRegion::getExtent(SValBuilder &svalBuilder) const {
  185   DefinedOrUnknownSVal Extent = DeclRegion::getExtent(svalBuilder);
  199 DefinedOrUnknownSVal AllocaRegion::getExtent(SValBuilder &svalBuilder) const {
  203 DefinedOrUnknownSVal SymbolicRegion::getExtent(SValBuilder &svalBuilder) const {
  207 DefinedOrUnknownSVal StringRegion::getExtent(SValBuilder &svalBuilder) const {
tools/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
  316 ProgramStateRef ProgramState::assumeInBound(DefinedOrUnknownSVal Idx,
  317                                       DefinedOrUnknownSVal UpperBound,
tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
  629   DefinedOrUnknownSVal getSizeInElements(ProgramStateRef state,
 1150     DefinedOrUnknownSVal V =
 1172     DefinedOrUnknownSVal V = svalBuilder.conjureSymbolVal(baseR, Ex, LCtx,
 1243     DefinedOrUnknownSVal V =
 1250   DefinedOrUnknownSVal V = svalBuilder.conjureSymbolVal(baseR, Ex, LCtx,
 1393 DefinedOrUnknownSVal
tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
   52 DefinedOrUnknownSVal SValBuilder::makeZeroVal(QualType type) {
  117 DefinedOrUnknownSVal
  135 DefinedOrUnknownSVal SValBuilder::conjureSymbolVal(const void *SymbolTag,
  153 DefinedOrUnknownSVal SValBuilder::conjureSymbolVal(const void *symbolTag,
  172 DefinedOrUnknownSVal SValBuilder::conjureSymbolVal(const Stmt *stmt,
  190 DefinedOrUnknownSVal
  220 DefinedOrUnknownSVal
  446 DefinedOrUnknownSVal SValBuilder::evalEQ(ProgramStateRef state,
  447                                          DefinedOrUnknownSVal lhs,
  448                                          DefinedOrUnknownSVal rhs) {
  450       .castAs<DefinedOrUnknownSVal>();
usr/include/c++/7.4.0/bits/invoke.h
   73       return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...);
   96 					std::forward<_Args>(__args)...);
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
usr/include/c++/7.4.0/bits/std_function.h
  371       _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
  374 		      std::forward<_ArgTypes>(__args)...);
  390     : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
  595       _Res operator()(_ArgTypes... __args) const;
  628       using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
  689 	typedef _Function_handler<_Res(_ArgTypes...), _Functor> _My_handler;
  706       return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
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
  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
  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
 1142     : public is_constructible<_Tp, const _Tp&>
 1142     : public is_constructible<_Tp, const _Tp&>
 1148     : public __is_copy_constructible_impl<_Tp>
 1160     : public is_constructible<_Tp, _Tp&&>
 1160     : public is_constructible<_Tp, _Tp&&>
 1166     : public __is_move_constructible_impl<_Tp>
 1554     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1629     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1664     : public __add_rvalue_reference_helper<_Tp>
 1955     { typedef _Tp     type; };
 2253     inline typename add_rvalue_reference<_Tp>::type
 2304       ((*std::declval<_Tp1>()).*std::declval<_Fp>())(std::declval<_Args>()...)
 2315       typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
 2428       std::declval<_Fn>()(std::declval<_Args>()...)
 2439       typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type;
 2452 	_Functor, _ArgTypes...
 2458     : public __invoke_result<_Functor, _ArgTypes...>
 2783 	    std::declval<_Args>()...));