get_addr_base_and_unit_offset_1 and get_ref_base_and_extent have similar code to handle array indices. The code in tree-dfa.c extends from the precision of the index, as before wide-int, but the tree-dfa.h version was updated in a way that could introduce a type inconsistency (flagged by a patch I'm working on). This version makes them the same again, as per the patch for PR59356.
Tested on x86_64-limux-gnu. OK to install? Thanks, Richard gcc/ * tree-dfa.h (get_addr_base_and_unit_offset_1): Update array index calculation to match get_ref_base_and_extent. Index: gcc/tree-dfa.h =================================================================== --- gcc/tree-dfa.h 2014-05-10 14:02:40.112187344 +0100 +++ gcc/tree-dfa.h 2014-05-10 14:02:50.414275258 +0100 @@ -103,7 +103,8 @@ get_addr_base_and_unit_offset_1 (tree ex TREE_CODE (unit_size) == INTEGER_CST)) { offset_int woffset - = offset_int::from (wi::sub (index, low_bound), SIGNED); + = wi::sext (wi::to_offset (index) - wi::to_offset (low_bound), + TYPE_PRECISION (TREE_TYPE (index))); woffset *= wi::to_offset (unit_size); byte_offset += woffset.to_shwi (); }