On Thu, Jul 10, 2025 at 04:03:29PM +0000, Qing Zhao wrote:
> The size of the element of the FAM _cannot_ reliably depends on the original
> TYPE of the FAM that we passed as the 6th parameter to the .ACCESS_WITH_SIZE:
> 
>      TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (gimple_call_arg (call, 5))))
> 
> when the element of the FAM has a variable length type. Since the variable
>  that represents TYPE_SIZE_UNIT has no explicit usage in the original IL,
> compiler transformations (such as DSE) that are applied before object_size
> phase might eliminate the whole definition to the variable that represents
> the TYPE_SIZE_UNIT of the element of the FAM.
> 
> In order to resolve this issue, instead of passing the original TYPE of the
> FAM as the 6th argument to .ACCESS_WITH_SIZE, we should explicitly pass the
> original TYPE_SIZE_UNIT of the element TYPE of the FAM as the 6th argument
> to the call to  .ACCESS_WITH_SIZE.
> 
> The patches have been bootstrapped and regression tested on both aarch64
> and x86.
> 
> Okay for trunk?
> 
> thanks.
> 
> Qing
> 
>       PR middle-end/121000
> 
> gcc/c/ChangeLog:
> 
>       * c-typeck.cc (build_counted_by_ref): Update comments.

You can't trust mklog that much.  You're updating
build_access_with_size_for_counted_by function comment, not
build_counted_by_ref comments.

>       (build_access_with_size_for_counted_by): Pass TYPE_SIZE_UNIT of the
>       element as the 6th argument.
> 
> gcc/ChangeLog:
> 
>       * internal-fn.cc (expand_DEFERRED_INIT): Update comments.
>       * internal-fn.def (DEFERRED_INIT): Update comments.

Nor these two.  It is expand_ACCESS_WITH_SIZE and ACCESS_WITH_SIZE
in these cases.

>       * tree-object-size.cc (access_with_size_object_size): Update comments.
>       Get the element_size from the 6th argument directly.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.dg/flex-array-counted-by-pr121000.c: New test.

Otherwise LGTM with one nit.
> +int main ()

Line break before main.

        Jakub

Reply via email to