manas added inline comments.
================ Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1400 + if (ResultType.isUnsigned()) { + LHS.From().uadd_ov(RHS.From(), HasMinOverflowed); + LHS.To().uadd_ov(RHS.To(), HasMaxOverflowed); ---------------- Using `uadd_ov` (and `sadd_ov`), we can get the added value as well as whether overflow occurred or not. A point is that these functions return `APInt` instead of `APSInt`. But when I tried just using: Min = LHS.From().uadd_ov(RHS.From(), HasMinOverflowed); Max = LHS.To().uadd_ov(RHS.From(), HasMaxOverflowed); instead of Min = LHS.From() + RHS.From(); Max = LHS.To() + RHS.To(); just for the added value, then the following tests failed (//these tests and all other tests pass when I use the latter method to get Min/Max//): Clang :: Analysis/PR3991.m Clang :: Analysis/global-region-invalidation.c Clang :: Analysis/malloc-overflow2.c Clang :: Analysis/out-of-bounds-new.cpp Clang :: Analysis/taint-generic.c I am working on fixing this part. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits