https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92883
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |10.0 --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The fix for the ICE is easy: --- gcc/ipa-cp.c.jj 2019-12-06 00:40:40.000000000 +0100 +++ gcc/ipa-cp.c 2019-12-10 11:57:10.354999085 +0100 @@ -2400,7 +2400,7 @@ propagate_vr_across_jump_function (cgrap NOP_EXPR, param_type, jfunc->m_vr->type ())) - vr.intersect (*jfunc->m_vr); + vr.intersect (jvr); } return dest_lat->meet_with (&vr); } but what isn't quite obvious why the code ever tries to intersect the range [0, 0xffffffffUL] which I'd bet comes from corge passing unsigned int to an unsigned long argument, and ~[0B, 0B] with char[1] * type which must come from quux calling bar with "" argument which is certainly non-NULL. I mean, what do those two ranges have in common?