diff options
Diffstat (limited to 'contrib/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h')
-rw-r--r-- | contrib/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/contrib/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h b/contrib/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h index d2461705d128..fac0c04ae2ca 100644 --- a/contrib/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h +++ b/contrib/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h @@ -23,11 +23,11 @@ #include "clang/Basic/LLVM.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseSet.h" -#include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallVector.h" #include <cassert> #include <cstdint> #include <memory> +#include <optional> namespace clang { @@ -83,7 +83,8 @@ public: /// \param[in] R The region to find the default binding for. /// \return The default value bound to the region in the store, if a default /// binding exists. - virtual Optional<SVal> getDefaultBinding(Store store, const MemRegion *R) = 0; + virtual std::optional<SVal> getDefaultBinding(Store store, + const MemRegion *R) = 0; /// Return the default value bound to a LazyCompoundVal. The default binding /// is used to represent the value of any fields or elements within the @@ -93,7 +94,7 @@ public: /// \param[in] lcv The lazy compound value. /// \return The default value bound to the LazyCompoundVal \c lcv, if a /// default binding exists. - Optional<SVal> getDefaultBinding(nonloc::LazyCompoundVal lcv) { + std::optional<SVal> getDefaultBinding(nonloc::LazyCompoundVal lcv) { return getDefaultBinding(lcv.getStore(), lcv.getRegion()); } @@ -172,17 +173,17 @@ public: /// dynamic_cast. /// - We don't know (base is a symbolic region and we don't have /// enough info to determine if the cast will succeed at run time). - /// The function returns an SVal representing the derived class; it's - /// valid only if Failed flag is set to false. - SVal attemptDownCast(SVal Base, QualType DerivedPtrType, bool &Failed); + /// The function returns an optional with SVal representing the derived class + /// in case of a successful cast and `std::nullopt` otherwise. + std::optional<SVal> evalBaseToDerived(SVal Base, QualType DerivedPtrType); const ElementRegion *GetElementZeroRegion(const SubRegion *R, QualType T); /// castRegion - Used by ExprEngine::VisitCast to handle casts from /// a MemRegion* to a specific location type. 'R' is the region being /// casted and 'CastToTy' the result type of the cast. - Optional<const MemRegion *> castRegion(const MemRegion *region, - QualType CastToTy); + std::optional<const MemRegion *> castRegion(const MemRegion *region, + QualType CastToTy); virtual StoreRef removeDeadBindings(Store store, const StackFrameContext *LCtx, SymbolReaper &SymReaper) = 0; @@ -316,8 +317,6 @@ inline StoreRef &StoreRef::operator=(StoreRef const &newStore) { // FIXME: Do we need to pass ProgramStateManager anymore? std::unique_ptr<StoreManager> CreateRegionStoreManager(ProgramStateManager &StMgr); -std::unique_ptr<StoreManager> -CreateFieldsOnlyRegionStoreManager(ProgramStateManager &StMgr); } // namespace ento |