https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62301
--- Comment #3 from Bill Schmidt <wschmidt at gcc dot gnu.org> --- Looks like a subtle logic change in the patch: + FOR_EACH_SUBRTX (iter, array, body, ALL) + if (const_rtx y = *iter) + { + /* Check if a label_ref Y refers to label X. */ + if (GET_CODE (y) == LABEL_REF && LABEL_P (y) && XEXP (y, 0) == x) + return true; - if (*body == NULL_RTX) - return y == NULL_RTX; + if (rtx_equal_p (x, y)) + return true; - /* Return true if a label_ref *BODY refers to label Y. */ - if (GET_CODE (*body) == LABEL_REF && LABEL_P (y)) - return XEXP (*body, 0) == y; If XEXP (y, 0) != x, it seems we should return false to match what was done before. Testing a patch to fix this.