shinichiro hamaji wrote:
This is one of my TODO. I think the easiest way would be adding a builtin function like __builtin_aggregate_types_p and using it in stdarg.h. I hesitated to do this because any other compilers don't have such extensions. A better way would be defining __builtin_va_arg just like GCC. I guess I will have some spare time this year end. I'll try working on this if no one don't fix.
Maybe you can use a support function in combination with a builtin. This would keep the generated code reasonably small and most of the logic could be in convenient C. Such as: in stdarg.h: #define va_arg(ap,type) *(type)*__va_arg(ap, __builtin_va_type(type)) and in libtcc1.c: enum va_type { va_reg, va_double, va_aggregate, ... }; void *__va_arg(va_list ap, int va_type) { switch(va_type) [ ... Btw, I was wondering whether alignment '4' for structures is correct. Basically registers and mmx would possibly go on top of some structure in the overflow_area when the register space is used up. There could also be doubles in a structure. Just wondering. --- grischka _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/tinycc-devel