https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78238
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tkoenig at gcc dot gnu.org --- Comment #11 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- At the place where the ICE happens: gcc_checking_assert (precision == x.get_precision ()); (gdb) p precision $1 = 64 (gdb) p x $2 = (const generic_wide_int<wide_int_storage> &) @0x7fffffffca10: {<wide_int_storage> = {val = {-1, 140737340585456, 140737340585456}, len = 1, precision = 32}, static is_sign_extended = <optimized out>} Looking up the call chain, the following can be found: gimple_simplify_174 (res_code=0x7fffffffcbcc, res_ops=0x7fffffffcbd0, type=0x7ffff7168b28, captures=0x7fffffffcad0, cmp=EQ_EXPR, valueize=0xad6320 <no_follow_ssa_edges(tree_node*)>, seq=0x7fffffffcd18) at gimple-match.c:7605 so it can be assumed that the type of a comparison goes wrong. Hmm... there is no difference visible in the tree dumps. However, there is the line if (x->_vptr->_hash == 64409183) in the dump. Maybe the types on the left and right hand sides do not agree?