(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
This commit is contained in:
Jim Wilson 1993-08-08 14:38:20 -07:00
parent 312def2eda
commit e6d525599d
1 changed files with 11 additions and 0 deletions

View File

@ -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))
{