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?