https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108547
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I suspect it is trying to simplifying: ((NOT (us_8.1_2 != 0))) OR ((func_7_ptr_13.8_9 != 0) AND (_8 != 0) AND (func_7_ptr_13.8_9 & 1) AND (NOT (_49 != 0)) AND (NOT (prephitmp_37 != 0))) OR ((func_7_ptr_13.8_9 & 1) AND (NOT (_49 != 0)) AND (NOT (_11 != 0))) OR ((NOT (_30 != 0)) AND (NOT (_49 != 0)) AND (NOT (prephitmp_37 != 0))) Note the & 1 there .... That seems like the issue, trying to simplify: (func_7_ptr_13.8_9 != 0) AND (func_7_ptr_13.8_9 & 1)