================
@@ -149,6 +149,12 @@ BuiltinFunctionChecker::checkOverflow(CheckerContext &C, 
SVal RetVal,
   // Calling a builtin with a non-integer type result produces compiler error.
   assert(Res->isIntegerType());
 
+  // If RetVal is unknown or undefined, we can't determine overflow
+  if (RetVal.isUnknown() || RetVal.isUndef()) {
----------------
steakhal wrote:

```suggestion
  if (RetVal.isUnknownOrUndef()) {
```

My question here would be: If `RetVal` was unknown, then both `IsLeMax` and 
`IsGeMin` would become unknown, which in turn would eventually return 
`{true,true}` as I later elaborate from what I can tell reading this.

If `RetVal` was `Undef` then `IsLeMax` and `IsGeMin` would be also `Undef` and 
the `IsLeMax.castAs<DefinedOrUnknownSVal>()` cast would trigger an assert/crash.
Consequently, I'm not convinced that `RetVal` can be `Undef` here.

https://github.com/llvm/llvm-project/pull/150225
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to