From abac9532e9b484698f8159f1c1b54ea99a4b17d9 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Mon, 15 Sep 2008 07:29:36 +0000 Subject: [PATCH] For an array access being an object with constant address, the array reference may be object with constant address. [r21954] --- ast.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ast.c b/ast.c index fc9d93f..c3b0c6b 100644 --- a/ast.c +++ b/ast.c @@ -1701,9 +1701,17 @@ static bool is_object_with_constant_address(const expression_t *expression) return is_object_with_constant_address(compound); } } - case EXPR_ARRAY_ACCESS: - return is_constant_pointer(expression->array_access.array_ref) - && is_constant_expression(expression->array_access.index); + + case EXPR_ARRAY_ACCESS: { + array_access_expression_t const* const array_access = + &expression->array_access; + return + is_constant_expression(array_access->index) && ( + is_object_with_constant_address(array_access->array_ref) || + is_constant_pointer(array_access->array_ref) + ); + } + case EXPR_UNARY_DEREFERENCE: return is_constant_pointer(expression->unary.value); default: -- 2.20.1