> Am 25.10.2023 um 16:50 schrieb Siddhesh Poyarekar <siddh...@gotplt.org>:
>
> On 2023-10-25 09:27, Qing Zhao wrote:
>>>> On Oct 24, 2023, at 7:56 PM, Siddhesh Poyarekar <siddh...@gotplt.org>
>>>> wrote:
>>>
>>> On 2023-10-24 18:51, Qing Zhao wrote:
>>>> Thanks for the proposal!
>>>> So what you suggested is:
>>>> For every x.buf, change it as a __builtin_with_size(x.buf, x.L) in the
>>>> FE, then the call to the _bdos (x.buf, 1) will
>>>> Become:
>>>> _bdos(__builtin_with_size(x.buf, x.L), 1)?
>>>> Then the implicit use of x.L in _bdos(x.buf.1) will become explicit?
>>>
>>> Oops, I think Martin and I fell off-list in a subthread. I clarified that
>>> my comment was that any such annotation at object reference is probably too
>>> late and hence not the right place for it; basically it has the same
>>> problems as the option A in your comment. A better place to reinforce such
>>> a relationship would be the allocation+initialization site instead.
>> I think Martin’s proposal might work, it’s different than the option A:
>> A. Add an additional argument, the size parameter, to __bdos,
>> A.1, during FE;
>> A.2, during gimplification phase;
>> Option A targets on the __bdos call, try to encode the implicit use to the
>> call, this will not work when the real object has not been instantiation at
>> the call site.
>> However, Martin’s proposal targets on the FMA array itself, it will enhance
>> the FAM access naturally with the size information. And such FAM access with
>> size info will propagated to the __bdos site later through inlining, etc.
>> and then tree-object-size can use the size information at that point. At the
>> same time, the implicit use of the size is recorded correctly.
>> So, I think that this proposal is natural and reasonable.
>
> Ack, we discussed this later in the thread and I agree[1]. Richard still has
> concerns[2] that I think may be addressed by putting __builtin_with_size at
> the point where the reference to x.buf escapes, but I'm not very sure about
> that.
>
> Oh, and Martin suggested using __builtin_with_size more generally[3] in
> bugzilla to address attribute inlining issues and we have high level
> consensus for a __builtin_with_access instead, which associates access type
> in addition to size with the target object. For the purposes of counted_by,
> access type could simply be -1.
Btw, I’d like to see some hard numbers on the amount of extra false positives
this will cause a well as the effect on generated code before putting this in
mainline and effectively needing to support it forever.
Richard
> Thanks,
> Sid
>
>
> [1]
> https://inbox.sourceware.org/gcc-patches/73af949c-3caa-4b11-93ce-3064b95a9...@gotplt.org/T/#m4f3cafa489493180e258fd62aca0196a5f244039
>
> [2]
> https://inbox.sourceware.org/gcc-patches/73af949c-3caa-4b11-93ce-3064b95a9...@gotplt.org/T/#mcf226f891621db8b640deaedd8942bb8519010f3
>
> [3] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96503#c6