PING 3 [PATCH] fix up compute_objsize (including PR 103143)
Martin Sebor
msebor@gmail.com
Mon Nov 29 15:49:32 GMT 2021
Ping:
https://gcc.gnu.org/pipermail/gcc-patches/2021-November/583735.html
On 11/22/21 9:41 AM, Martin Sebor wrote:
> Ping:
> https://gcc.gnu.org/pipermail/gcc-patches/2021-November/583735.html
>
> On 11/15/21 9:49 AM, Martin Sebor wrote:
>> Ping for the following cleanup patch:
>> https://gcc.gnu.org/pipermail/gcc-patches/2021-November/583735.html
>>
>> On 11/8/21 7:34 PM, Martin Sebor wrote:
>>> The pointer-query code that implements compute_objsize() that's
>>> in turn used by most middle end access warnings now has a few
>>> warts in it and (at least) one bug. With the exception of
>>> the bug the warts aren't behind any user-visible bugs that
>>> I know of but they do cause problems in new code I've been
>>> implementing on top of it. Besides fixing the one bug (just
>>> a typo) the attached patch cleans up these latent issues:
>>>
>>> 1) It moves the bndrng member from the access_ref class to
>>> access_data. As a FIXME in the code notes, the member never
>>> did belong in the former and only takes up space in the cache.
>>>
>>> 2) The compute_objsize_r() function is big, unwieldy, and tedious
>>> to step through because of all the if statements that are better
>>> coded as one switch statement. This change factors out more
>>> of its code into smaller handler functions as has been suggested
>>> and done a few times before.
>>>
>>> 3) (2) exposed a few places where I fail to pass the current
>>> GIMPLE statement down to ranger. This leads to worse quality
>>> range info, including possible false positives and negatives.
>>> I just spotted these problems in code review but I haven't
>>> taken the time to come up with test cases. This change fixes
>>> these oversights as well.
>>>
>>> 4) The handling of PHI statements is also in one big, hard-to-
>>> follow function. This change moves the handling of each PHI
>>> argument into its own handler which merges it into the previous
>>> argument. This makes the code easier to work with and opens it
>>> to reuse also for MIN_EXPR and MAX_EXPR. (This is primarily
>>> used to print informational notes after warnings.)
>>>
>>> 5) Finally, the patch factors code to dump each access_ref
>>> cached by the pointer_query cache out of pointer_query::dump
>>> and into access_ref::dump. This helps with debugging.
>>>
>>> These changes should have no user-visible effect and other than
>>> a regression test for the typo (PR 103143) come with no tests.
>>> They've been tested on x86_64-linux.
>>>
>>> Martin
>>
>
More information about the Gcc-patches
mailing list