vsavchenko added a comment.
This is a very complicated patch, I think we'll have to iterate on it quite a
lot.
Additionally, we have to be sure that this doesn't crash our performance.
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1131
+class NominalTypeList {
+ CanQualType Types[4];
----------------
Comments on:
* why do we need it?
* why does it have four types?
* why do we not care about signed/unsigned types?
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:2797-2799
+ProgramStateRef
+RangeConstraintManager::updateExistingConstraints(ProgramStateRef State,
+ SymbolRef Sym, RangeSet R) {
----------------
OK, but I still don't understand one thing.
Here you go over all "smaller" types and artificially create constraints for
them, and at the same time in `VisitSymbolCast` you do the opposite operation?
Why? Shouldn't the map have constraints for smaller types already because of
this action? Why do we need to do both?
================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:2801-2802
+ // Get a root symbol in case of SymbolCast.
+ while (isa<SymbolCast>(Sym))
+ Sym = cast<SymbolCast>(Sym)->getOperand();
+
----------------
This looks like a pattern and we should probably make into a method of
`SymbolCast`
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103096/new/
https://reviews.llvm.org/D103096
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits