Hello,

> On 23 Jun 2019, at 23:18, Michael Matz <matz....@frakked.de> wrote:
> 
> The patch definitely goes into the right direction, though it seem more 
> verbose than necessary.  I'd just test for functions or incomplete types (via 
> type_size), and then you have the opportunity to retain the more precise 
> error message for the former, ala
> 
>  if (func)
>    tcc_error ...
>  else if (type_size < 0)
>    tcc_error ...
>  okay ...

I considered this but:
- the single generic error message seemed consistent with a compiler which 
advertises its small size and its speed, and which was accepting these programs 
until recently,
- but even producing a generic error message, functions would have to remain as 
a separate case because type_size returns 1 for them,
- and also type_size returns 1 for void, so that would have to be another 
separate case if we wish to reject arrays of void.

Two separate cases mean we have to compute type->t & VT_BTYPE. If we call 
type_size it will recompute it, and store an alignment that we do not require 
to a variable that we will have to declare. It doesn't look like it's shorter 
or faster.

If you think that this much code should be put in a function, that might be 
useful elsewhere, I can do that, but when compiling GCC's dialect of C where 
pointer arithmetic is legal for pointers to void and function pointers, “being 
a type with a size in the sense of pointer arithmetic” and “being a complete 
type” become different enough to require two different functions.
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to