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));