aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-04-11 11:19:31 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-05-21 17:27:45 +0200
commit4e70521d74cb10b795825f7376539ed493dd2ac3 (patch)
tree5d2e017dcb9c2a44bc05fb9aa3285bfcb83daddb
parent86edd142e6fa4483cf5cb057ffac4cb548a9374c (diff)
downloadsparse-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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/evaluate.c b/evaluate.c
index d4b46227..c757fc82 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -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;
}
}