https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105802
--- Comment #4 from Andrew Macleod <amacleod at redhat dot com> --- The reason for the precision check is because doing a union or intersection with ranges of different precisions is problematic, and being sure what the user expects would be a guess normally in this sort of situation, we pick the one we care about, and cast the other one if we are sure they need to be compatible... if they already are, it wont do anything. ie range_cast (path_range, r.type ()) r.intersect (path_range); or vice versa.