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.