tccgen: accept array-size expressions in function paramters
commitec5d94291cf0d1cca3f8aeac34d6e997881c8592
authorgrischka <grischka>
Tue, 1 Mar 2022 21:00:42 +0000 (1 22:00 +0100)
committergrischka <grischka>
Wed, 16 Mar 2022 18:16:29 +0000 (16 19:16 +0100)
tree5d09077e23f648232673e95c45f6e6f2b56fb82b
parent917aad3bcfbb534875aa6d66609bdb36459460a4
tccgen: accept array-size expressions in function paramters

Modify function parameter parser such that symbols are
put into token-table temporarily.  Benefits are:
- detects redefinitions, as with
    int foo(int a, int a);
- detects reserved symbols, as with
    int foo(int if);
- can parse expressions like
    int main(int argc, char *argv[argc + 1]);
- doesn't fix this one
    int main(int argc, char *argv[++argc]);

Also: fix unexpected "function might return no value"
with statement expression
    int f() { ({ return 0; }); }
tcc.h
tccelf.c
tccgen.c
tests/tests2/60_errors_and_warnings.c
tests/tests2/60_errors_and_warnings.expect