[cfe-dev] [analyzer][RFC] Handle pointer difference of ElementRegion and SymbolicRegion

Valeriy Savchenko via cfe-dev cfe-dev at lists.llvm.org
Wed Jul 29 00:08:50 PDT 2020


> ...only base regions and raw offsets are truly material.

I strongly agree with this statement and believe that the analysis should operate only in these terms.  However, for a better experience of us (the analyzer developers), I would still leave ElementRegion or FieldRegion as a very thin layer over base + offset for debugging purposes.

> On 28 Jul 2020, at 22:38, Artem Dergachev via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> 
> Yes, we should totally handle this case. I'll take a look at the patch.
> 
> The bigger picture here is that ElementRegion is on its own a fairly annoying fundamental bug in our region hierarchy (https://bugs.llvm.org/show_bug.cgi?id=43364 <https://bugs.llvm.org/show_bug.cgi?id=43364>). I ultimately prefer to solve this by eliminating ElementRegion, FieldRegion, etc., entirely; only base regions and raw offsets are truly material.
> 
> On 7/28/20 3:47 AM, Balázs Benics via cfe-dev wrote:
>> Currently, if the analyzer evaluates an expression like to - from, it only computes reasonable answer if both are representing ElementRegions.
>> 
>> Formally, for all memory region X and for all SVal offset Y:
>> &Element{SymRegion{X},Y,char} - &SymRegion{X} => Y
>> The same for the symmetric version, but returning -Y instead.
>> 
>> I'm curious why don't we handle the case, when only one of the operands is an ElementRegion and the other is a plain SymbolicRegion.
>> IMO if the super memory region of the ElementRegion is the same as the SymbolicRegion then we can still return a reasonable answer.
>> 
>> In this patch, I suppose an extension to resolve this in https://reviews.llvm.org/D84736 <https://reviews.llvm.org/D84736>
>> Unfortunately, Phabricator patches require passing the tests to start a discussion recently.
>> 
>> Analyzer devs, could you share your opinion on this?
>> 
>> Balazs.
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev <https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200729/4e7b9c8c/attachment.html>


More information about the cfe-dev mailing list