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