aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-04-12 10:37:58 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-05-21 17:27:45 +0200
commit4a71ea1810242c08f66afe16ef9ec0b917439023 (patch)
treebe08340aade381a0fdba28684882e61feb4e6787
parent557aba56c4bc4c4b4c38b97a2d545c31e0706b31 (diff)
downloadsparse-4a71ea1810242c08f66afe16ef9ec0b917439023.tar.gz
bad-goto: reorg test in evaluate_goto_statement()
No functional changes here, only changing the code structure to prepare more incoming changes. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--evaluate.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/evaluate.c b/evaluate.c
index c18ae81d..4bdd5ed0 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -3742,10 +3742,14 @@ static void evaluate_goto_statement(struct statement *stmt)
{
struct symbol *label = stmt->goto_label;
- if (label && !label->stmt && label->ident && !lookup_keyword(label->ident, NS_KEYWORD))
+ if (!label) {
+ // no label associated, may be a computed goto
+ evaluate_expression(stmt->goto_expression);
+ return;
+ }
+ if (!label->stmt && label->ident && !lookup_keyword(label->ident, NS_KEYWORD)) {
sparse_error(stmt->pos, "label '%s' was not declared", show_ident(label->ident));
-
- evaluate_expression(stmt->goto_expression);
+ }
}
struct symbol *evaluate_statement(struct statement *stmt)