> On Apr 8, 2025, at 12:54, Siddhesh Poyarekar <siddh...@gotplt.org> wrote:
> 
> On 2025-04-08 12:41, Qing Zhao wrote:
>> The gimple IR is:
>>   1 int main ()
>>   2 {
>>   3   int D.5072;
>>   4
>>   5   {
>>   6     struct annotated * q;
>>   7
>>   8     q = alloc_buf (10);
>>   9     _1 = __builtin_dynamic_object_size (q, 1);
>>  10     __builtin_printf ("the bdos whole is %d\n", _1);
>>  11     D.5072 = 0;
>>  12     return D.5072;
>>  13   }
>>  14   D.5072 = 0;
>>  15   return D.5072;
>>  16 }
>>  17
>>  18
>>  19 __attribute__((noinline))
>>  20 struct annotated * alloc_buf (int index)
>>  21 {
>>  22   struct annotated * D.5074;
>>  23   struct annotated * p;
>>  24   25   _1 = (long unsigned int) index;
>>  26   _2 = _1 + 9;
>>  27   _3 = MAX_EXPR <_2, 16>;
>>  28   p = malloc (_3);
>>  29   _4 = (long unsigned int) index;
>>  30   p->count = _4;
>>  31   D.5074 = p;
>>  32   return D.5074;
>>  33 }
>> When we generate the .ACCESS_WITH_SIZE for a pointer reference to “struct 
>> annotated”,
>> Looks like all the pointer references, at line 8, “q”,  at line 9, “q”, at 
>> line 28, “p”, need to be changed
>> to a call to .ACCESS_WITH_SIZE. this might increase the IR size 
>> unnecessarily.   Might have some
>> Impact on the inlining decision heuristics or other heuristic that depend on 
>> the code size.
> 
> Do you need a .ACCESS_WITH_SIZE for initialization sites?
It’s not necessary. I will need to see how to distinguish an initialization 
site from use sites in C FE.

>  I was thinking we ought to need it only for read/dereference sites (which 
> should be sufficient as a barrier too), so in this case it would only be for 
> 'q' at line 9.

Will study a little bit more here to see how to implement this in FE. 


> 
>>> For a reference to a structure with FAM, such as p, we can generate a call 
>>> to .ACCESS_WITH_SIZE whose 3rd argument
>>> is 0 (the number of bytes). And this information can be used in 
>>> __builtin_object_size. But not in array bound sanitizer.
> 
> Would that be necessary though, given that the array bound sanitizer only 
> works on arrays and not other kinds of objects?

Yes, that’s my thought too. 

Thanks for your suggestions. They are helpful.

Qing
> 
> Thanks,
> Sid

Reply via email to