diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-05-29 11:35:25 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-07 21:01:54 -0700 |
| commit | 51924e9a562a79859a4c9129d7e2b59fe5fc1cee (patch) | |
| tree | f362143b6c7c402fb32cb5635ea1bcc71afb0d1f | |
| parent | 1604e925e5a093019b6a2f6ba4c64934f970c21c (diff) | |
| download | sparse-dev-51924e9a562a79859a4c9129d7e2b59fe5fc1cee.tar.gz | |
Degenerate the final expression of a statement expression.
| -rw-r--r-- | evaluate.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -842,11 +842,14 @@ static struct symbol *create_pointer(struct expression *expr, struct symbol *sym /* Arrays degenerate into pointers on pointer arithmetic */ static struct symbol *degenerate(struct expression *expr) { - struct symbol *ctype = expr->ctype; - struct symbol *base = ctype; + struct symbol *ctype, *base; + if (!expr) + return NULL; + ctype = expr->ctype; if (!ctype) return NULL; + base = ctype; if (ctype->type == SYM_NODE) base = ctype->ctype.base_type; /* @@ -1654,7 +1657,8 @@ struct symbol *evaluate_statement(struct statement *stmt) return evaluate_return_expression(stmt); case STMT_EXPRESSION: - return evaluate_expression(stmt->expression); + evaluate_expression(stmt->expression); + return degenerate(stmt->expression); case STMT_COMPOUND: { struct statement *s; |
