diff options
| author | Michael Matz <matz@suse.de> | 2016-09-19 18:33:44 +0200 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2016-12-15 17:47:11 +0100 |
| commit | b303a00ce01876dfa2ba3fe532db04d200168b9d (patch) | |
| tree | 7a19fee83f931068aeacc4168348e9719d943fc7 /tccgen.c | |
| parent | d4d3144e7516421880faf362ed2693c00c309065 (diff) | |
| download | tinycc-b303a00ce01876dfa2ba3fe532db04d200168b9d.tar.gz tinycc-b303a00ce01876dfa2ba3fe532db04d200168b9d.tar.bz2 | |
Revert "Reject jumping inside stmtexprs"
Not fully thought out. You can't jump inside stmt exprs,
but you can jump out of them. So there's a difference
between undefined but declared labels at the end of stmt
exprs and those defined inside. Additionally it should
also be checked if a label defined inside a stmt expr
was tentatively created as declared from outside.
I'm not prepared doing that right now, so simply revert.
This reverts commit 9160e4cab9147d77840cc44a285031fdb4640cf9.
Diffstat (limited to 'tccgen.c')
| -rw-r--r-- | tccgen.c | 8 |
1 files changed, 1 insertions, 7 deletions
@@ -5418,7 +5418,7 @@ static void block(int *bsym, int *csym, int is_expr) gsym(a); gsym_addr(b, d); } else if (tok == '{') { - Sym *llabel, *glabel; + Sym *llabel; int block_vla_sp_loc = vla_sp_loc, saved_vlas_in_scope = vlas_in_scope; next(); @@ -5426,10 +5426,6 @@ static void block(int *bsym, int *csym, int is_expr) s = local_stack; llabel = local_label_stack; ++local_scope; - /* Labels defined inside statement expressions aren't - available from the outside, so record that as well. */ - if (is_expr) - glabel = global_label_stack; /* handle local labels declarations */ if (tok == TOK_LABEL) { @@ -5455,8 +5451,6 @@ static void block(int *bsym, int *csym, int is_expr) block(bsym, csym, is_expr); } } - if (is_expr) - label_pop(&global_label_stack, glabel); /* pop locally defined labels */ label_pop(&local_label_stack, llabel); /* pop locally defined symbols */ |
