aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-11-18 17:18:47 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-11-18 21:57:59 +0100
commitfd1491b217595b1da31a7c72303cbffff0aba56a (patch)
treee0bf0760205d82229807b5389e192db72e4de8eb
parenta624f755195c4d69b4ad554ec0fe88e2e8efe70d (diff)
downloadsparse-fd1491b217595b1da31a7c72303cbffff0aba56a.tar.gz
unqual: statement expressions should drop qualifiers
Statement expressions should be subjected to lvalue-conversion and thus should drop qualifiers. Fix this by calling unqualify_type() after array-to-pointer conversion. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--evaluate.c2
-rw-r--r--validation/eval/unqual-stmt-expr.c1
2 files changed, 1 insertions, 2 deletions
diff --git a/evaluate.c b/evaluate.c
index b6e84771..48ce61f0 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -3950,7 +3950,7 @@ struct symbol *evaluate_statement(struct statement *stmt)
return NULL;
if (stmt->expression->ctype == &null_ctype)
stmt->expression = cast_to(stmt->expression, &ptr_ctype);
- return degenerate(stmt->expression);
+ return unqualify_type(degenerate(stmt->expression));
case STMT_COMPOUND: {
struct statement *s;
diff --git a/validation/eval/unqual-stmt-expr.c b/validation/eval/unqual-stmt-expr.c
index bac6cb6b..280c2fe8 100644
--- a/validation/eval/unqual-stmt-expr.c
+++ b/validation/eval/unqual-stmt-expr.c
@@ -9,5 +9,4 @@ int *foo(volatile int x)
/*
* check-name: unqual-stmt-expr
- * check-known-to-fail
*/