https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102720
--- Comment #9 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
OK, with -alias dump we have:
int main ()
{
uint8_t * q;
void * p;
long unsigned int _2;
<bb 2> :
# PT = null { D.2008 }
# ALIGN = 8, MISALIGN = 0
# USE = anything
# CLB = anything
p_5 = malloc (1024);
# USE = anything
# CLB = anything
memset (p_5, 15, 1024);
MEM[(uint8_t *)p_5 + 1B] = 0;
# USE = nonlocal escaped { D.2008 }
_2 = test_uint8_tsize_t (p_5);
if (_2 != 1)
goto <bb 3>; [INV]
else
goto <bb 4>; [INV]
<bb 3> :
# USE = nonlocal escaped
# CLB = nonlocal escaped
__builtin_abort ();
<bb 4> :
return 0;
}
and here I think the problem is that p points-to contains D.2008 while call
uses D.2014 so they do not intersect. Interestingly enough for ealias we have
D.2008 in both and the graph solution dumpted is exactly the same...