https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116526
--- Comment #4 from Filip Kastl <pheeck at gcc dot gnu.org> ---
I don't think ipa-pta's role here is making a change to the symbol table.
ipa-pta computes that the points-to set of _2 is empty. If I change it to be
non-empty, I avoid the ICE. That makes sense, since then GCC knows 'if (_2 ==
&a)' is always false and therefore the call to memcpy is unreachable.
a-testcase.c.074i.targetclone2:
<bb 3> [local count: 536870912]:
_2 = i_8(D)->d;
if (_2 == &a)
goto <bb 4>; [17.43%]
else
goto <bb 5>; [82.57%]
<bb 4> [local count: 93576600]:
b.1_3 = b;
_4 = (long unsigned int) b.1_3;
f.2_5 = f;
memcpy (f.2_5, i_8(D), _4);
The next dump is a-testcase.c.077i.profile, where neither the if nor the call
can be found.