From: Kaz Kojima Date: Tue, 29 Nov 2016 23:23:30 +0000 (+0000) Subject: backport: re PR target/78426 (wrong code with strncmp on SH) X-Git-Tag: releases/gcc-5.5.0~676 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3db94cffbe6d8ecd1d117ae3af1f4dd3db0f7884;p=thirdparty%2Fgcc.git backport: re PR target/78426 (wrong code with strncmp on SH) Backported from mainline 2016-11-19 Kaz Kojima PR target/78426 * config/sh/sh-mem.cc (sh_expand_cmpnstr): Use copy_to_mode_reg instead of force_reg. (sh_expand_setmem): Likewise. From-SVN: r242982 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54a9b2ac454c..12b758b08146 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-11-29 Kaz Kojima + + Backported from mainline + 2016-11-19 Kaz Kojima + + PR target/78426 + * config/sh/sh-mem.cc (sh_expand_cmpnstr): Use copy_to_mode_reg + instead of force_reg. + (sh_expand_setmem): Likewise. + 2016-11-24 Martin Liska Backported from mainline 2016-11-22 Martin Liska diff --git a/gcc/config/sh/sh-mem.cc b/gcc/config/sh/sh-mem.cc index d09209004a67..a9d7b9afc970 100644 --- a/gcc/config/sh/sh-mem.cc +++ b/gcc/config/sh/sh-mem.cc @@ -363,7 +363,7 @@ sh_expand_cmpnstr (rtx *operands) rtx_code_label *L_loop_byte = gen_label_rtx (); rtx_code_label *L_end_loop_byte = gen_label_rtx (); - rtx len = force_reg (SImode, operands[3]); + rtx len = copy_to_mode_reg (SImode, operands[3]); int constp = CONST_INT_P (operands[3]); /* Loop on a register count. */ @@ -674,9 +674,9 @@ sh_expand_setmem (rtx *operands) rtx jump; rtx dest = copy_rtx (operands[0]); rtx dest_addr = copy_addr_to_reg (XEXP (dest, 0)); - rtx val = force_reg (SImode, operands[2]); + rtx val = copy_to_mode_reg (SImode, operands[2]); int align = INTVAL (operands[3]); - rtx len = force_reg (SImode, operands[1]); + rtx len = copy_to_mode_reg (SImode, operands[1]); if (! CONST_INT_P (operands[1])) return;