diff --git a/tccgen.c b/tccgen.c index 2ce6820f..cb9765c8 100644 --- a/tccgen.c +++ b/tccgen.c @@ -4036,6 +4036,10 @@ static void expr_cond(void) if (const_wanted) { expr_lor_const(); + } else { + expr_lor(); + } + if (const_wanted || ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST)) { if (tok == '?') { CType boolean; int c; @@ -4057,7 +4061,6 @@ static void expr_cond(void) vpop(); } } else { - expr_lor(); if (tok == '?') { next(); if (vtop != vstack) { diff --git a/tests/tcctest.c b/tests/tcctest.c index 980b4363..57459bba 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -2081,6 +2081,8 @@ void *bounds_checking_is_enabled() 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) { #if defined __i386__ || defined __x86_64__