https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119731
--- Comment #14 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Just a quick update. It looks like undefined code in the verifier producing a
verification error.
scalar32_min_max_arsh does:
u64 umin_val = src_reg->u32_min_value;
/* Upon reaching here, src_known is true and
* umax_val is equal to umin_val.
*/
dst_reg->s32_min_value = (u32)(((s32)dst_reg->s32_min_value) >>
umin_val);
dst_reg->s32_max_value = (u32)(((s32)dst_reg->s32_max_value) >>
umin_val);
Where umin_val would be 32 which has undefined behavior in it.
Once someone has filed/provided a fix for the verifier in the linux kernel this
bug should be closed as moved.