https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105802
Andrew Macleod <amacleod at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amacleod at redhat dot com --- Comment #2 from Andrew Macleod <amacleod at redhat dot com> --- Its trapoping on irange::irange_intersect (const irange &r) { gcc_checking_assert (!legacy_mode_p () && !r.legacy_mode_p ()); gcc_checking_assert (undefined_p () || r.undefined_p () || range_compatible_p (type (), r.type ())); on the range_compatible_p() call returning false. 688 if (!ranger->gori ().outgoing_edge_range_p (r, e, idx, 689 *get_global_range_query ())) 690 continue; 691 r.intersect (path_range); (gdb) p path_range.dump(stderr) [irange] E [0, 0]$5 = void (gdb) p r.dump(stderr) [irange] int [-INF, -1][2, +INF] I guess E and int are not compatible types ? for ranges we check: return (TYPE_PRECISION (type1) == TYPE_PRECISION (type2) && TYPE_SIGN (type1) == TYPE_SIGN (type2));