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...