https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111070
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- In this case name1 and name2 are both ADDR_EXPR rather than SSA_NAMES. We start with: ``` <bb 2> [local count: 1073741822]: _1 = (long unsigned int) &c_ary[0]; _2 = _1 & 7; if (_2 != 0) goto <bb 5>; [34.00%] else goto <bb 3>; [66.00%] <bb 3> [local count: 708669599]: _3 = (long unsigned int) &d_ary[0]; _4 = _3 & 7; if (_4 != 0) ``` And ifcombine is trying to optimize it to: ``` _7 = (unsigned long) &d_ary[0]; _8 = (unsigned long) &c_ary[0]; _9 = _7 | _8; _10 = _9 & 7; if (_10 != 0) ``` Which is what GCC 13 did.