From e6d525599dddc1c7e20ebdd5a9bfd4257b15f39e Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Sun, 8 Aug 1993 14:38:20 -0700 Subject: [PATCH] (build_array_ref): Force array to be allocated on the stack if... (build_array_ref): Force array to be allocated on the stack if it is accessed by out-of-bound constant integer subscript. From-SVN: r5111 --- gcc/c-typeck.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 64d51e1ded0..c748a562cd5 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -1252,6 +1252,17 @@ build_array_ref (array, index) if (mark_addressable (array) == 0) return error_mark_node; } + /* An array that is indexed by a constant value which is not within + the array bounds cannot be stored in a register either; because we + would get a crash in store_bit_field/extract_bit_field when trying + to access a non-existent part of the register. */ + if (TREE_CODE (index) == INTEGER_CST + && TYPE_VALUES (TREE_TYPE (array)) + && ! int_fits_type_p (index, TYPE_VALUES (TREE_TYPE (array)))) + { + if (mark_addressable (array) == 0) + return error_mark_node; + } if (pedantic && !lvalue_p (array)) { -- 2.30.2