From e6d2aa64dfb4bc43d60fce259b6e8e326d00a865 Mon Sep 17 00:00:00 2001 From: bebbo Date: Wed, 8 May 2024 09:45:54 +0200 Subject: [PATCH] refs #229: disable the peepholes on 68000/10 if the offset is > 16 bit --- gcc/config/m68k/m68k.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 7a8adb404c9..c481a445589 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -9226,6 +9226,7 @@ MEM_P(operands[3]) && ADDRESS_REG_P(XEXP(operands[3], 0)) && XEXP(operands[3], 0) == operands[0] && + ((!TARGET_68000 && !TARGET_68010) || IN_RANGE (INTVAL (operands[2]), -32768, 32767)) && !reg_overlap_mentioned_p(operands[0], operands[4]) " [(set (match_dup 5) (match_dup 4)) @@ -9248,8 +9249,9 @@ ] "operands[0] != operands[1] && offsettable_nonstrict_memref_p(operands[3]) && + ((!TARGET_68000 && !TARGET_68010) || IN_RANGE (INTVAL (operands[2]), -32768, 32767)) && !reg_overlap_mentioned_p(operands[0], operands[3]) && !reg_overlap_mentioned_p(operands[0], operands[4]) && - !reg_overlap_mentioned_p(operands[1], operands[4]) + !reg_overlap_mentioned_p(operands[1], operands[4]) " [(set (match_dup 3) (match_dup 4)) (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))] @@ -9271,7 +9273,8 @@ "operands[0] != operands[1] && ADDRESS_REG_P(operands[1]) && MEM_P(operands[3]) && GET_CODE(XEXP(operands[3], 0)) == PLUS && ADDRESS_REG_P(XEXP(XEXP(operands[3], 0), 0)) && - CONST_INT_P(XEXP(XEXP(operands[3], 0), 0)) && + CONST_INT_P(XEXP(XEXP(operands[3], 0), 0)) && + ((!TARGET_68000 && !TARGET_68010) || IN_RANGE (INTVAL (operands[2]), -32768, 32767)) && !reg_overlap_mentioned_p(operands[0], operands[3]) && !reg_overlap_mentioned_p(operands[0], operands[4]) " [(set (match_dup 3) (match_dup 4)) @@ -9293,7 +9296,7 @@ (plus (match_dup 0) (match_operand:SI 3 "const_int_operand" ""))) ] "operands[0] != operands[1] && ADDRESS_REG_P (operands[1]) && - IN_RANGE (INTVAL (operands[2]) + INTVAL (operands[3]), -32768, 32767) && + ((!TARGET_68000 && !TARGET_68010) || IN_RANGE (INTVAL (operands[2]), -32768, 32767)) && peep2_reg_dead_p (2, operands[0]) " [(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 4)))]