From 0b6073c14cc381df624ab28192413d33b4b162de Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 2 Sep 2008 08:17:21 +0000 Subject: [PATCH] sizeof from vla type is not constant [r21633] --- ast.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ast.c b/ast.c index 1905759..1dd6085 100644 --- a/ast.c +++ b/ast.c @@ -1639,7 +1639,6 @@ bool is_constant_expression(const expression_t *expression) case EXPR_WIDE_CHARACTER_CONSTANT: case EXPR_STRING_LITERAL: case EXPR_WIDE_STRING_LITERAL: - case EXPR_SIZEOF: case EXPR_CLASSIFY_TYPE: case EXPR_FUNCNAME: case EXPR_OFFSETOF: @@ -1647,6 +1646,17 @@ bool is_constant_expression(const expression_t *expression) case EXPR_BUILTIN_CONSTANT_P: return true; + case EXPR_SIZEOF: { + type_t *type = expression->typeprop.type; + if (type == NULL) + type = expression->typeprop.tp_expression->base.type; + + type = skip_typeref(type); + if (is_type_array(type) && type->array.is_vla) + return false; + return true; + } + case EXPR_BUILTIN_SYMBOL: case EXPR_BUILTIN_PREFETCH: case EXPR_SELECT: -- 2.20.1