VLA representation in GCC internals

Martin Uecker uecker@tugraz.at
Sat Nov 9 08:38:45 GMT 2024


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.

Martin






More information about the Gcc mailing list