Am Montag, dem 05.08.2024 um 11:50 +0200 schrieb Jakub Jelinek:
> On Mon, Aug 05, 2024 at 11:45:56AM +0200, Alejandro Colomar wrote:
> > [CC += Kees, Qing]
> > 
> > Hi Joseph,
> > 
> > On Sun, Aug 04, 2024 at 08:34:24PM GMT, Alejandro Colomar wrote:
> > > On Sun, Aug 04, 2024 at 08:02:25PM GMT, Martin Uecker wrote:
> > > D'oh!  I screwed it.  I wanted to have written this:
> > > 
> > >   $ cat star.c 
> > >   void foo(char (*a)[3][*], int (*x)[__lengthof__(*a)]);
> > 
> > I think this answers your question of if we want __lengthof__ to
> > evaluate its operand if the top-level array is non-VLA but an inner
> > array is VLA.
> > 
> > We clearly want it to not evaluate, because we want this __lengthof__
> > to be a constant expression, ...
> 
> But if you don't evaluate the argument, you can't handle counted_by.
> Because for counted_by you need the expression (the object on which it is
> used).

You would not evaluate only when the size is an integer constant
expression, which would not apply to counted_by.

Martin


Reply via email to