------- Comment #6 from matz at gcc dot gnu dot org 2010-02-04 15:03 ------- Re comment #4, there are two possibilities to fix this: 1) as you say, don't regard MEM addresses (i.e. used in double indirection) as const_or_frame_p, because that would put different (but runtime-same) bases into different groups, or 2) fix this marvel in check_mem_read_rtx: if (group_id == store_info->group_id) ... /* else The else case that is missing here is that the bases are constant but different. There is nothing to do here because there is no overlap. */
Clearly the comment is wrong, base addresses can be constant, different for rtx_equal purposes, but still be the same at runtime. When going the (2) way we would need to ask the oracle, which most of the time would probably say "don't know" anyway, and be slow. Hence not regarding such base addresses as interesting for the global problem seems to be the better fix. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42952