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

--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 13 May 2019, marxin at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90450
> 
> --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
> (In reply to Richard Biener from comment #1)
> > Not exactly sure what happens, need to investigate.  The testcase looks
> > innocous enough at least ...
> 
> It's about 'd[f]' and 'd[0]' references. The former one is hashed in else
> branch and the later
> in true branch. These are then equal in mem_ref_hasher::equal as
> operand_equal_p can return true
> for these 2 array references.

Huh?  Would have to debug this.  The equality function probably
should start with


 if (mem1->mem.max_size_known_p ()
     != obj2->max_size_known_p ())
   return false;

which may fix the issue.  As said, need to reproduce locally.

Reply via email to