https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100112
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- In the strict aliasing case: # .MEM_10 = VDEF <.MEM_9(D)> *a.0_1 = _3; # VUSE <.MEM_10> c.1_4 = c; # .MEM_11 = VDEF <.MEM_10> c = c.1_4; # VUSE <.MEM_11> c.2_5 = c; We use MEM_9 for the load of c (the one with VUSE of MEM_10) as the vuse for the hashtable. In the non-strict-aliasing case, we use the VUSE of MEM_10 and it works. Richi, You know the SCCVN code the best, maybe you can understand how to fix this better.