diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-04-27 02:47:47 +0200 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-05-21 17:27:45 +0200 |
commit | f3ec4bb41cddaeb154f0b8a7ffbc1d7d64691263 (patch) | |
tree | 2f50034582b63b9b10b502f5eaca0a78961a2183 | |
parent | c5421b0d1ab0ab2d182ee1c1efbbc20f24275242 (diff) | |
download | sparse-f3ec4bb41cddaeb154f0b8a7ffbc1d7d64691263.tar.gz |
bad-goto: check declaration of label expressions
Issue an error when taking the address of an undeclared label
and mark the function as improper for linearization since
the resulting IR would be invalid.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | evaluate.c | 1 | ||||
-rw-r--r-- | validation/label-scope-cgoto.c | 1 | ||||
-rw-r--r-- | validation/linear/label-scope-cgoto.c | 1 |
3 files changed, 1 insertions, 2 deletions
@@ -3344,6 +3344,7 @@ struct symbol *evaluate_expression(struct expression *expr) case EXPR_LABEL: expr->ctype = &ptr_ctype; + check_label_declaration(expr->pos, expr->label_symbol); return &ptr_ctype; case EXPR_TYPE: diff --git a/validation/label-scope-cgoto.c b/validation/label-scope-cgoto.c index c5d278d3..1edb9948 100644 --- a/validation/label-scope-cgoto.c +++ b/validation/label-scope-cgoto.c @@ -65,7 +65,6 @@ l: 1; /* * check-name: label-scope-cgoto * check-command: sparse -Wno-decl $file - * check-known-to-fail * * check-error-start label-scope-cgoto.c:12:19: error: label 'l' used outside statement expression diff --git a/validation/linear/label-scope-cgoto.c b/validation/linear/label-scope-cgoto.c index 592f1ce4..0eba05ae 100644 --- a/validation/linear/label-scope-cgoto.c +++ b/validation/linear/label-scope-cgoto.c @@ -3,7 +3,6 @@ /* * check-name: linear/label-scope-cgoto * check-command: test-linearize -Wno-decl -I. $file - * check-known-to-fail * * check-error-ignore * check-output-ignore |