First finish parsing, then do semantic checks in parse_va_start().
authorChristoph Mallon <christoph.mallon@gmx.de>
Thu, 17 May 2012 17:56:49 +0000 (19:56 +0200)
committerChristoph Mallon <christoph.mallon@gmx.de>
Sat, 19 May 2012 08:10:35 +0000 (10:10 +0200)
parser.c

index 3793347..11d0962 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -6431,6 +6431,9 @@ static expression_t *parse_va_start(void)
        rem_anchor_token(',');
        expect(',');
        expression_t *const expr = parse_assignment_expression();
+       rem_anchor_token(')');
+       expect(')');
+
        if (expr->kind == EXPR_REFERENCE) {
                entity_t *const entity = expr->reference.entity;
                if (!current_function->base.type->function.variadic) {
@@ -6447,8 +6450,7 @@ static expression_t *parse_va_start(void)
        } else {
                expression = create_error_expression();
        }
-       rem_anchor_token(')');
-       expect(')');
+
        return expression;
 }