steakhal added a comment. Very solid patch!
================ Comment at: clang/lib/StaticAnalyzer/Core/Store.cpp:98 QualType PointeeTy = CastToTy->getPointeeType(); QualType CanonPointeeTy = Ctx.getCanonicalType(PointeeTy); ---------------- You only use `CanonPointeeTy.getLocalUnqualifiedType()` all the places. Spell it once and reuse it everywhere. ================ Comment at: clang/lib/StaticAnalyzer/Core/Store.cpp:104 - // Handle casts from compatible types. - if (R->isBoundable()) + const auto IsSameRegionType = [&Ctx, CanonPointeeTy](const MemRegion *R) { if (const auto *TR = dyn_cast<TypedValueRegion>(R)) { ---------------- For me at least, a name like `IsSameRegionType()` would imply a function with two parameters. ================ Comment at: clang/lib/StaticAnalyzer/Core/Store.cpp:115 + // Handle casts from compatible types. + if (R->isBoundable() && IsSameRegionType(R)) + return R; ---------------- BTW do you know what `isBoundable()` is? I'm just curious. ================ Comment at: clang/lib/StaticAnalyzer/Core/Store.cpp:184 + // Edge case: we are at 0 bytes off the beginning of baseR. We // check to see if type we are casting to is the same as the base + // region. If so, just return the base region. ---------------- Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113480/new/ https://reviews.llvm.org/D113480 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits