https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82916
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- What the code does is when seeing the MEM[(struct et_occ *)p_3].of = node_5(D); store, we go through all current chains (there is exactly one at that point) and for each chain through all their stmts and do: 961 if (ref_maybe_used_by_stmt_p (stmt, gimple_assign_lhs (info->stmt)) 962 || stmt_may_clobber_ref_p (stmt, gimple_assign_lhs (info->stmt))) stmt here is MEM[(struct et_occ *)p_3].of = node_5(D); and info->stmt is p_3->next = 0B; And because both of these functions return false, we think there can't be any aliasing. We want to make sure that if there are any (valid) uses of the memory set by the info->stmt store, or if we are overwriting any part of the info->stmt lhs memory in stmt that we terminate the chain. Are these functions not the right alias functions to call?