mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-26 03:50:07 +08:00
tccgen.c: Give error if statement expression found when const wanted.
Some test cases: #define SE ({ switch (0) { } 0; }) // Should give error: int x = SE; void f(void) { static int x = SE; } void f(void) { enum e { a = SE }; } void f(void) { switch (0) { case SE: break; } } // Correct: int f(void) { return SE; } int f(void) { return sizeof(SE); }
This commit is contained in:
parent
51c3465a49
commit
99372bb1d3
8
tccgen.c
8
tccgen.c
@ -3831,12 +3831,8 @@ ST_FUNC void unary(void)
|
||||
gen_cast(&type);
|
||||
}
|
||||
} else if (tok == '{') {
|
||||
/*
|
||||
if (nocode_wanted)
|
||||
tcc_error("statement expression in global scope"); */
|
||||
/* this check breaks compilation of the linux 2.4.26 with the meesage:
|
||||
linux/include/net/tcp.h:945: error: statement expression in global scope */
|
||||
|
||||
if (const_wanted)
|
||||
tcc_error("expected constant");
|
||||
/* save all registers */
|
||||
save_regs(0);
|
||||
/* statement expression : we do not accept break/continue
|
||||
|
Loading…
Reference in New Issue
Block a user