NoQ added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:443-446
+  auto RetVal = C.getSValBuilder().evalBinOp(
+      State, BOK, FirstPtrVal, SecondPtrVal, Call.getResultType());
+  State = State->BindExpr(Call.getOriginExpr(), C.getLocationContext(), 
RetVal);
+  C.addTransition(State);
----------------
RedDocMD wrote:
> NoQ wrote:
> > Because these operators are pure boolean functions, a state split would be 
> > justified. It's pointless to call the operator unless both return values 
> > are feasible. I think you should do an `assume()` and transition into both 
> > states.
> > 
> > It might also make sense to consult `-analyzer-config eagerly-assume=` 
> > before doing it but it sounds like this option will stays true forever and 
> > we might as well remove it.
> > 
> > The spaceship operator is obviously an exceptional case. Invocation of the 
> > spaceship operator isn't a good indication that all three return values are 
> > feasible, might be only two.
> I think this comment has got displaced from its original location from 
> subsequent updates. Could you please clarify?
You can always go back in time by clicking the `|<<` button in the top-left 
corner of the comment ;)

I'm trying to say that you should introduce a state split while evaluating the 
operators, not wait for the control flow operators to do that for you, exactly 
like the static analyzer currently does for the raw comparison operators.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104616/new/

https://reviews.llvm.org/D104616

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to