mirror of
https://github.com/frida/tinycc
synced 2025-01-12 06:39:51 +03:00
tests/tests2/78_vla_label.*: Add test.
This commit is contained in:
parent
cfef9ac3f5
commit
737f984213
34
tccgen.c
34
tccgen.c
@ -4468,8 +4468,11 @@ static void expr_land(void)
|
||||
expr_land();
|
||||
gen_cast(&ctb);
|
||||
} else {
|
||||
int saved_nocode_wanted = nocode_wanted;
|
||||
nocode_wanted = 1;
|
||||
expr_land();
|
||||
vpop();
|
||||
nocode_wanted = saved_nocode_wanted;
|
||||
}
|
||||
gen_cast(&cti);
|
||||
} else {
|
||||
@ -4499,8 +4502,11 @@ static void expr_lor(void)
|
||||
next();
|
||||
gen_cast(&ctb);
|
||||
if (vtop->c.i) {
|
||||
int saved_nocode_wanted = nocode_wanted;
|
||||
nocode_wanted = 1;
|
||||
expr_lor();
|
||||
vpop();
|
||||
nocode_wanted = saved_nocode_wanted;
|
||||
} else {
|
||||
vpop();
|
||||
expr_lor();
|
||||
@ -4533,6 +4539,7 @@ static void expr_cond(void)
|
||||
if (tok == '?') {
|
||||
next();
|
||||
if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {
|
||||
int saved_nocode_wanted = nocode_wanted;
|
||||
CType boolean;
|
||||
int c;
|
||||
boolean.t = VT_BOOL;
|
||||
@ -4540,16 +4547,27 @@ static void expr_cond(void)
|
||||
gen_cast(&boolean);
|
||||
c = vtop->c.i;
|
||||
vpop();
|
||||
if (tok != ':' || !gnu_ext) {
|
||||
if (c) {
|
||||
if (tok != ':' || !gnu_ext) {
|
||||
vpop();
|
||||
gexpr();
|
||||
}
|
||||
skip(':');
|
||||
nocode_wanted = 1;
|
||||
expr_cond();
|
||||
vpop();
|
||||
gexpr();
|
||||
nocode_wanted = saved_nocode_wanted;
|
||||
} else {
|
||||
vpop();
|
||||
if (tok != ':' || !gnu_ext) {
|
||||
nocode_wanted = 1;
|
||||
gexpr();
|
||||
vpop();
|
||||
nocode_wanted = saved_nocode_wanted;
|
||||
}
|
||||
skip(':');
|
||||
expr_cond();
|
||||
}
|
||||
if (!c)
|
||||
vpop();
|
||||
skip(':');
|
||||
expr_cond();
|
||||
if (c)
|
||||
vpop();
|
||||
}
|
||||
else {
|
||||
if (vtop != vstack) {
|
||||
|
@ -27,10 +27,19 @@ void f2(void)
|
||||
}
|
||||
}
|
||||
|
||||
void f3(void)
|
||||
{
|
||||
printf("%d\n", 0 ? printf("x1\n") : 11);
|
||||
printf("%d\n", 1 ? 12 : printf("x2\n"));
|
||||
printf("%d\n", 0 && printf("x3\n"));
|
||||
printf("%d\n", 1 || printf("x4\n"));
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
f1(2);
|
||||
f2();
|
||||
f3();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,2 +1,6 @@
|
||||
boom!
|
||||
boom!
|
||||
11
|
||||
12
|
||||
0
|
||||
1
|
||||
|
Loading…
Reference in New Issue
Block a user