re-added negative-array-size testcase and fixed fix for it
This commit is contained in:
parent
d7d8458888
commit
9b52e16a50
2 changed files with 5 additions and 3 deletions
6
tccgen.c
6
tccgen.c
|
|
@ -3166,13 +3166,13 @@ static void post_type(CType *type, AttributeDef *ad)
|
||||||
n = -1;
|
n = -1;
|
||||||
t1 = 0;
|
t1 = 0;
|
||||||
if (tok != ']') {
|
if (tok != ']') {
|
||||||
gexpr();
|
if (!local_stack || nocode_wanted)
|
||||||
|
vpushi(expr_const());
|
||||||
|
else gexpr();
|
||||||
if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {
|
if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {
|
||||||
n = vtop->c.i;
|
n = vtop->c.i;
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
error("invalid array size");
|
error("invalid array size");
|
||||||
} else if (!local_stack) {
|
|
||||||
error("expected constant expression (variably modified array at file scope)");
|
|
||||||
} else {
|
} else {
|
||||||
if (!is_integer_btype(vtop->type.t & VT_BTYPE))
|
if (!is_integer_btype(vtop->type.t & VT_BTYPE))
|
||||||
error("size of variable length array should be an integer");
|
error("size of variable length array should be an integer");
|
||||||
|
|
|
||||||
|
|
@ -2083,6 +2083,8 @@ void *bounds_checking_is_enabled()
|
||||||
return (ca != cp + 1) ? cp : NULL;
|
return (ca != cp + 1) ? cp : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef int constant_negative_array_size_as_compile_time_assertion_idiom[(1 ? 2 : 0) - 1];
|
||||||
|
|
||||||
void c99_vla_test(int size1, int size2)
|
void c99_vla_test(int size1, int size2)
|
||||||
{
|
{
|
||||||
#if defined __i386__ || defined __x86_64__
|
#if defined __i386__ || defined __x86_64__
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue