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

--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, so disabling the forwprop breaks testcases like gcc.dg/tree-ssa/alias-21.c:

  <bb 2>:
  *r_2(D) = 0;
  _4 = r_2(D) + 4;
  *_4 = 1;
  _6 = *r_2(D);
  return _6;

SCCVN isn't able to disambiguate *r_2(D) against *_4 because the alias
machinery doesn't look at SSA defintions.  forwprop also handles things
like forwarding p + 4 into p->x.y.z or &p->x.y.z which we don't want to
disable either.  We do have both the address we propagate (with a suggested
interface change to handle &xxx + CST without building a &MEM[]) and
the tree we propagate to.  So we should be able to reject / recover
a pointer-plus in forward_propagate_addr_expr_1 as needed.

Reply via email to