https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96564

--- Comment #19 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #17)
> Handling pointer-vs-pointer in ptrs_compare_unequal isn't enough since we
> have
> 
>   # PT = nonlocal null
>   unsigned int * x_7(D) = x;
> ...
>   # PT = null { D.2785 }
>   a_9 = malloc (_2);
>   if (a_9 == 0B) 
>     goto <bb 7>; [0.04%]
>   else
>     goto <bb 3>; [99.96%]
> 
>   <bb 7> [local count: 429496]:
>   goto <bb 6>; [100.00%]
> 
>   <bb 3> [local count: 1073312328]:
>   if (x_7(D) != a_9)
> 
> so querying points-to only has to consider both pointers being NULL.  Now,
> I'm not sure how prange handles the above and whether or how it integrates
> knowledge from flow-insensitive points-to analysis.

prange currently does nothing different than what irange did.  It's a first
step in providing points-to and propagating the information through the CFG
like we do for integer ranges.  Or more precisely, prange is meant to be
nothing more than a pair of integer end points (not unlimited like
int_range_max), plus a value/mask pair.

> 
> Aldy might know.
> 
> I'm testing a patch enhancing ptrs_compare_unequal right now, also filling
> in a missing bit in points-to info.

Reply via email to