martong accepted this revision. martong added a comment. This revision is now accepted and ready to land.
I am okay with this change, it does give a proper canonical form, which is good. On the other hand, I agree that (on the long term) base regions and offsets would be a better memory model than what we have now with field and element regions. ================ Comment at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h:799 + /// we actually know their types. + QualType getApproximatedType() const { + return sym->getType()->getPointeeType(); ---------------- I think we should express that this returns the - type of the pointee - the type that is the "static" type, id est, the type of the declaration; `void`, `char` and `base` in your example above. In this sense, what about `getPointeeStaticType`? ================ Comment at: clang/test/Analysis/ctor.mm:221 clang_analyzer_eval(p4.x > 0); // expected-warning{{TRUE}} - // FIXME: Element region gets in the way, so these aren't the same symbols - // as they should be. - clang_analyzer_eval(pp.x == p4.x); // expected-warning{{UNKNOWN}} + clang_analyzer_eval(pp.x == p4.x); // expected-warning{{TRUE}} ---------------- Nice! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132142/new/ https://reviews.llvm.org/D132142 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits