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