NagyDonat wrote:

> Commit 7 justifies dropping Tag ? Tag : Location.getTag() with 
> "Location.withTag(Location.getTag()) is the same as Location". Strictly, that 
> isn't true. ProgramPoint::withTag rebuilds the point without its ElemRef, 
> while operator== and Profile both compare ElemRef (ProgramPoint.h:137-139, 
> :192-194). For PreImplicitCall/PostImplicitCall points 
> (CallEvent.cpp:320-321), a null-Tag 
> generateErrorNode()/generateNonFatalErrorNode() used to create a node without 
> the ElemRef.

This is a good catch by the AI – `ProgramPoint:withTag` intended to only change 
the `Tag` (the comment before it explicitly states this), but when 
d65379c8d4768ddae143672f5d4827acafe22553 introduced the extra data member 
`ElemRef` (in 2023), it failed to update `withTag`, so since then `withTag` 
"eats" the `ElemRef` field of the `ProgramPoint`s that it modifies.

This is an ugly bug, so I'll quickly create a separate commit to fix it.



https://github.com/llvm/llvm-project/pull/231180
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to