Am Samstag, dem 09.11.2024 um 11:29 +0100 schrieb Alejandro Colomar via Gcc: > On Sat, Nov 09, 2024 at 09:38:45AM GMT, Martin Uecker wrote: > > Am Samstag, dem 09.11.2024 um 00:54 +0100 schrieb Alejandro Colomar via Gcc: > > > Hi Martin, > > > > > > I'm in the process of rebasing my __countof__ changes after your patch > > > that fixes support for [*] and [0]. > > > > > > I should update the implementation of the following function: > > > > > > static bool > > > is_top_array_vla (tree type) > > > { > > > bool zero, star, var; > > > tree d; > > > > > > if (TREE_CODE (type) != ARRAY_TYPE) > > > return false; > > > if (!COMPLETE_TYPE_P (type)) > > > return false; > > > > > > d = TYPE_DOMAIN (type); > > > zero = !TYPE_MAX_VALUE (d); > > > star = (zero && C_TYPE_VARIABLE_SIZE (type)); > > > if (star) > > > return true; > > > if (zero) > > > return false; > > > > > > var = (TREE_CODE (TYPE_MIN_VALUE (d)) != INTEGER_CST > > > || TREE_CODE (TYPE_MAX_VALUE (d)) != INTEGER_CST); > > > return var; > > > } > > > > > > The 'star' calculation should be updated. Would you mind proposing an > > > implementation of this function that works with your changes? Thanks! > > > > > You can just eliminate the code for the star as it would now > > automatically end up as variable. > > Thanks! > > Have a lovely day! > Alex
Just committed, so you could rebase on trunk now. I also wanted to change zero representation to be the same as in the C++ FE, but I need to rethink this. Maybe this change already solves most of our problems. BTW: My main practical issue with zero-sized arrays is that the UB sanitizers triggers for zero-sized variable arrays. Martin