https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115951
--- Comment #3 from Andrew Macleod <amacleod at redhat dot com> --- I think I have a handle on it. The issue is statements like _80 = _79 == 0 where in ADA a a boolean type is 8 bits and GCC's default boolean type is 1 bit. All through ranger we use the type of the LHS, but when the pointer operations were split out for GCC 15 into their own type, we accidentally ended up with the relational operators using the default boolean type instead of generating a result with the appropriate type. Thus for the above statement we were getting a 1 bit boolean for the RHS and an 8 bit boolean for the LHS, resulting in incompatible ranges (which require identical precision) I'll try making those adjustments and see if it bootstraps for me.