diff options
-rw-r--r-- | gcc/config/rs6000/predicates.md | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index eac07c71f59..a3b86dc8ff3 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -1207,6 +1207,10 @@ { if(GET_CODE(XEXP(op,1)) == CONST_INT ) { + if(GET_CODE( op ) == GEU || + GET_CODE( op ) == GTU || + GET_CODE( op ) == LEU || + GET_CODE( op ) == LTU) return 0; if((INTVAL(XEXP(op,1)) < 32) && (INTVAL(XEXP(op,1)) >= 0)) return 1; else return 0; } diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 1ada02f42a4..62c2a52b450 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -19148,12 +19148,14 @@ rs6000_emit_cbranch (enum machine_mode mode, rtx operands[]) //debug_rtx(loc_ref); // (label_ref 0) loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands[3]); + enum rtx_code code = GET_CODE (operands[0]); // Split the compare and branch if not PPE42 or not optimized for size // or can't meet the constraints of fused compare-branch. if( (rs6000_cpu != PROCESSOR_PPE42) || !optimize_size || ((GET_CODE (operands[2]) == CONST_INT) && - ((INTVAL(operands[2]) < 0) || (INTVAL(operands[2]) > 31)))) + ((INTVAL(operands[2]) < 0) || (INTVAL(operands[2]) > 31) || + code==GTU || code==GEU || code==LTU || code==LEU ))) { condition_rtx = rs6000_generate_compare (operands[0], mode); |