From: Jim Wilson Date: Sun, 8 Aug 1993 21:38:20 +0000 (-0700) Subject: (build_array_ref): Force array to be allocated on the stack if... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e6d525599dddc1c7e20ebdd5a9bfd4257b15f39e;p=gcc.git (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 --- 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)) {