Revert "Disable C99 VLA when alloca is unavailable."
This reverts commit e3e5d4ad7a
.
This commit is contained in:
parent
b0c50fbd4d
commit
4b8470f3ae
2 changed files with 2 additions and 10 deletions
8
tccgen.c
8
tccgen.c
|
@ -3162,21 +3162,17 @@ static void post_type(CType *type, AttributeDef *ad)
|
|||
n = -1;
|
||||
if (tok != ']') {
|
||||
gexpr();
|
||||
#ifdef TOK_alloca
|
||||
if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {
|
||||
#endif
|
||||
n = vtop->c.i;
|
||||
last_vtop = vtop;
|
||||
if (n < 0)
|
||||
error("invalid array size");
|
||||
#ifdef TOK_alloca
|
||||
} else {
|
||||
if (!is_integer_btype(vtop->type.t & VT_BTYPE))
|
||||
error("size of variable length array should be an integer");
|
||||
type->t |= VT_VLA;
|
||||
last_vtop = vtop;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
skip(']');
|
||||
/* parse next post type */
|
||||
|
@ -4868,11 +4864,7 @@ static void decl_initializer(CType *type, Section *sec, unsigned long c,
|
|||
int a;
|
||||
CValue retcval;
|
||||
|
||||
/* No need to coment all the block as it will never be called without
|
||||
TOK_alloca defined (See ifdef TOK_alloca stanza in post_type */
|
||||
#ifdef TOK_alloca
|
||||
vpush_global_sym(&func_old_type, TOK_alloca);
|
||||
#endif
|
||||
vla_runtime_type_size(type, &a);
|
||||
gfunc_call(1);
|
||||
|
||||
|
|
|
@ -2010,7 +2010,7 @@ void old_style_function(void)
|
|||
|
||||
void alloca_test()
|
||||
{
|
||||
#ifdef TOK_alloca
|
||||
#if defined __i386__ || defined __x86_64__
|
||||
char *p = alloca(16);
|
||||
strcpy(p,"123456789012345");
|
||||
printf("alloca: p is %s\n", p);
|
||||
|
@ -2022,7 +2022,7 @@ void alloca_test()
|
|||
|
||||
void c99_vla_test(int size1, int size2)
|
||||
{
|
||||
#ifdef TOK_alloca
|
||||
#if defined __i386__ || defined __x86_64__
|
||||
int tab1[size1 * size2][2], tab2[10][2];
|
||||
void *tab1_ptr, *tab2_ptr;
|
||||
|
||||
|
|
Loading…
Reference in a new issue