https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102720
--- Comment #8 from Jan Hubicka <hubicka at gcc dot gnu.org> --- so it is really pt_solutions_intersect in ref_maybe_used_by_call returning false. We get: (gdb) p *pt1 $6 = {anything = 0, nonlocal = 1, escaped = 1, ipa_escaped = 0, null = 0, vars_contains_nonlocal = 0, vars_contains_escaped = 0, vars_contains_escaped_heap = 0, vars_contains_restrict = 0, vars_contains_interposable = 0, vars = 0x7ffff7518dc0} (gdb) p *pt2 $7 = {anything = 0, nonlocal = 0, escaped = 0, ipa_escaped = 0, null = 1, vars_contains_nonlocal = 0, vars_contains_escaped = 0, vars_contains_escaped_heap = 0, vars_contains_restrict = 0, vars_contains_interposable = 0, vars = 0x7ffff7518ae0} (gdb) p debug_bitmap (pt1->vars) first = 0x7ffff7531b40 current = 0x7ffff7531b40 indx = 15 0x7ffff7531b40 next = (nil) prev = (nil) indx = 15 bits = { 2008 } $8 = void (gdb) p debug_bitmap (pt2->vars) first = 0x7ffff7540a00 current = 0x7ffff7540a00 indx = 15 0x7ffff7540a00 next = (nil) prev = (nil) indx = 15 bits = { 2014 } Here pt1 is call use and pt2 is PTA of MEM[(uint8_t *)p_4 + 1B]; The bitmaps are indeed disjoint. I would expect them to be p_4 = { HEAP(14) } CALLUSED(18) = { NONLOCAL HEAP(14) } So they should overleap by HEAP(14)... Honza