https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80297
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So far this looks like some tree sharing issue. *expr_p = gimple_boolify (*expr_p); if (!useless_type_conversion_p (org_type, TREE_TYPE (*expr_p))) { *expr_p = fold_convert_loc (input_location, org_type, *expr_p); ret = GS_OK; } changes in place unsigned int type into bool and then wraps into cast to unsigned int, but that now bool EQ_EXPR appears somewhere else too.