diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-04-11 11:19:31 +0200 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-05-21 17:27:45 +0200 |
commit | 4e70521d74cb10b795825f7376539ed493dd2ac3 (patch) | |
tree | 5d2e017dcb9c2a44bc05fb9aa3285bfcb83daddb | |
parent | 86edd142e6fa4483cf5cb057ffac4cb548a9374c (diff) | |
download | sparse-4e70521d74cb10b795825f7376539ed493dd2ac3.tar.gz |
bad-goto: do not linearize function with undeclared labels
It's not possible to produce a valid & correct IR if
the function contains a goto to an undeclared label.
So, try to catch these situations and mark the function
as such, the linearization will then simply ignore it.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | evaluate.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -3750,6 +3750,7 @@ static void evaluate_goto_statement(struct statement *stmt) if (label->namespace == NS_LABEL && !label->stmt) { sparse_error(stmt->pos, "label '%s' was not declared", show_ident(label->ident)); + current_fn->bogus_linear = 1; } } |