The following program has an obvious bug, and both gcc and clang refuse
to compile it with an on-point error.  tcc produces an incorrect warning and
creates code that has no chance of working:

#include <stdio.h>
>
> typedef struct symbol symbol;
> extern void foo(symbol *);
>
> int main()
> {
>   foo(&(symbol){});
>   return 0;
> }
>
> struct symbol {
>   char *name;
>   int size;
> };
>
> void foo(symbol *s)
> {
>   printf("name=[%s]", s->name);
> }
>

tcc version 0.9.28rc 2023-11-08 mob@be8f894 (x86_64 Linux)

This is obviously not a show-stopper, but using an incomplete type _is_
something
that can happen in real life, and tcc does a pretty poor job here.  I'd be
willing to take
a look if someone can give me some hints.

Thanks - Eric
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to