https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63475

--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #3)
> Created attachment 33699 [details]
> Updated patch

I have started native alpha bootstrap with the above attached patch.

The idea implemented the patch is as follows:
- always dig into X and MEM addresses using get_addr
- use this expanded address when checking for AND codes with MEM_READONLY_P
operand
- also use expanded address in find_base_term and base_alias_check and
canon_rtx.
- for canonicalized address, use original address as passed to the functions.

(get_addr can still return VALUE, but in this case find_base_term returns
ADDRESS RTX, and this prevents invalid detection of non-aliased condition in:

  /* Differing symbols not accessed via AND never alias.  */
  if (GET_CODE (x_base) != ADDRESS && GET_CODE (y_base) != ADDRESS)
    return 0;
)

Bootstrap and regression test went OK on x86_64.

Reply via email to