------- Comment #2 from pinskia at gcc dot gnu dot org  2010-09-17 20:35 -------
Not what is happening is an interaction between the inlining and the return
slot optimization and the named value optimization.
Before inlining we have:

  # storage_1 = PHI <&<retval>.storage[0](2), &<retval>.storage[1](3)>
  copyBack.1_1 = (struct Region *) &copyBack;
  *copyBack.1_1 ={v} subtract (a_2(D)) [return slot optimization];

--- Cut ----
Since &(*copyBack.1_1).storage[0] is not a constant we get an ICE.  Why we
don't remove the extra cast to begin is questionable.  If we change:
  const Region copyBack(subtract(a));
  const Region copyBack = (subtract(a));

We can remove the cast and it works.



Reply via email to