https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108647
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aldyh at gcc dot gnu.org, | |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The ICE is when operator_lt::op2_range does: 976 case BRS_FALSE: 977 build_le (r, type, op1.upper_bound ()); 978 break; lhs is [irange] bool [0, 0] NONZERO 0x0 and rhs is [irange] UNDEFINED which is why op1.upper_bound () ICEs - it has no pairs. I wonder if operator_lt::op?_range and other operators shouldn't start with relop_early_resolve or at least empty_range_varying or something similar to deal with op?.undefined_p ().