From: Andreas Schwab Date: Fri, 3 Jan 2014 13:57:45 +0000 (+0000) Subject: m68k.c (handle_move_double): Handle pushes with overlapping registers also for regist... X-Git-Tag: releases/gcc-4.9.0~1844 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e864837ad6b324d0025bc4a1a06cf480da34deb3;p=thirdparty%2Fgcc.git m68k.c (handle_move_double): Handle pushes with overlapping registers also for registers other than the... * config/m68k/m68k.c (handle_move_double): Handle pushes with overlapping registers also for registers other than the stack pointer. From-SVN: r206317 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5e8ee2b5a28..1cb81b7aa4ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-03 Andreas Schwab + + * config/m68k/m68k.c (handle_move_double): Handle pushes with + overlapping registers also for registers other than the stack + pointer. + 2014-01-03 Marek Polacek PR other/59661 diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 25b8580e0d65..f20d0719cefe 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -3328,12 +3328,12 @@ handle_move_double (rtx operands[2], latehalf[1] = adjust_address (operands[1], SImode, 0); } - /* If insn is effectively movd N(sp),-(sp) then we will do the - high word first. We should use the adjusted operand 1 (which is N+4(sp)) - for the low word as well, to compensate for the first decrement of sp. */ + /* If insn is effectively movd N(REG),-(REG) then we will do the high + word first. We should use the adjusted operand 1 (which is N+4(REG)) + for the low word as well, to compensate for the first decrement of + REG. */ if (optype0 == PUSHOP - && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM - && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1])) + && reg_overlap_mentioned_p (XEXP (XEXP (operands[0], 0), 0), operands[1])) operands[1] = middlehalf[1] = latehalf[1]; /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),