================ @@ -907,6 +945,76 @@ void StreamChecker::preWrite(const FnDescription *Desc, const CallEvent &Call, C.addTransition(State); } +static std::optional<QualType> getPointeeType(const MemRegion *R) { + if (!R) + return std::nullopt; + if (const auto *ER = dyn_cast<ElementRegion>(R)) + return ER->getElementType(); + if (const auto *TR = dyn_cast<TypedValueRegion>(R)) + return TR->getValueType(); + if (const auto *SR = dyn_cast<SymbolicRegion>(R)) + return SR->getPointeeStaticType(); + return std::nullopt; +} + +static std::optional<NonLoc> getStartIndex(SValBuilder &SVB, + const MemRegion *R) { + if (!R) + return std::nullopt; + + auto Zero = [&SVB] { + BasicValueFactory &BVF = SVB.getBasicValueFactory(); + return nonloc::ConcreteInt(BVF.getIntValue(0, /*isUnsigned=*/false)); + }; + + if (const auto *ER = dyn_cast<ElementRegion>(R)) + return ER->getIndex(); + if (const auto *TR = dyn_cast<TypedValueRegion>(R)) ---------------- aeubanks wrote:
unused variable (and ditto below), please use `isa<>` https://github.com/llvm/llvm-project/pull/93408 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits