mirror of
https://github.com/frida/tinycc
synced 2024-11-24 08:39:37 +03:00
clarify support for functions returning an array (try#2)
fixes first attempt: http://repo.or.cz/w/tinycc.git/commitdiff/31fe1cc
This commit is contained in:
parent
91163f167e
commit
9ff91d4c6f
13
tccgen.c
13
tccgen.c
@ -3108,16 +3108,21 @@ static void post_type(CType *type, AttributeDef *ad)
|
||||
if (l == 0)
|
||||
l = FUNC_OLD;
|
||||
skip(')');
|
||||
t1 = type->t & VT_STORAGE;
|
||||
/* NOTE: const is ignored in returned type as it has a special
|
||||
meaning in gcc / C++ */
|
||||
type->t &= ~(VT_STORAGE | VT_CONSTANT);
|
||||
type->t &= ~VT_CONSTANT;
|
||||
/* some ancient pre-K&R C allows a function to return an array
|
||||
and the array brackets to be put after the arguments, such
|
||||
that "int c()[]" means the same as "int[] c()" */
|
||||
post_type(type, ad);
|
||||
that "int c()[]" means something like "int[] c()" */
|
||||
if (tok == '[') {
|
||||
next();
|
||||
skip(']'); /* only handle simple "[]" */
|
||||
type->t |= VT_PTR;
|
||||
}
|
||||
/* we push a anonymous symbol which will contain the function prototype */
|
||||
ad->func_args = arg_size;
|
||||
t1 = type->t & VT_STORAGE;
|
||||
type->t &= ~VT_STORAGE;
|
||||
s = sym_push(SYM_FIELD, type, INT_ATTR(ad), l);
|
||||
s->next = first;
|
||||
type->t = t1 | VT_FUNC;
|
||||
|
Loading…
Reference in New Issue
Block a user