Hi, I've committed the attached patch which enables the CC of x+constant instructions to be used in more situations on z9 or higher.
No regressions on s390 and s390x (--with-arch=z196). Bye, -Andreas- 2012-12-04 Andreas Krebbel <andreas.kreb...@de.ibm.com> * config/s390/s390.c (s390_select_ccmode): Enable using CC of x + imm for higher immediates on z9-109 upwards. --- gcc/config/s390/s390.c | 5 !!!!! 1 file changed, 5 modifications(!) Index: gcc/config/s390/s390.c =================================================================== *** gcc/config/s390/s390.c.orig --- gcc/config/s390/s390.c *************** s390_select_ccmode (enum rtx_code code, *** 691,697 **** int a, b; if ((b = a + c) > 0) with c as a constant value: c < 0 -> CCAN and c >= 0 -> CCAP */ if (GET_CODE (op0) == PLUS && GET_CODE (XEXP (op0, 1)) == CONST_INT ! && CONST_OK_FOR_K (INTVAL (XEXP (op0, 1)))) { if (INTVAL (XEXP((op0), 1)) < 0) return CCANmode; --- 691,700 ---- int a, b; if ((b = a + c) > 0) with c as a constant value: c < 0 -> CCAN and c >= 0 -> CCAP */ if (GET_CODE (op0) == PLUS && GET_CODE (XEXP (op0, 1)) == CONST_INT ! && (CONST_OK_FOR_K (INTVAL (XEXP (op0, 1))) ! || (CONST_OK_FOR_CONSTRAINT_P (INTVAL (XEXP (op0, 1)), 'O', "Os") ! /* Avoid INT32_MIN on 32 bit. */ ! && (!TARGET_ZARCH || INTVAL (XEXP (op0, 1)) != -0x7fffffff - 1)))) { if (INTVAL (XEXP((op0), 1)) < 0) return CCANmode;