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

Reply via email to