re PR target/51244 ([SH] Inefficient conditional branch and code around T bit)

gcc/
	PR target/51244
	* config/sh/sh.c (sh_rtx_costs): Fix return value of SET of movt and
	movrt patterns.  Match them before anything else in the SET case.

From-SVN: r240533
This commit is contained in:
Oleg Endo 2016-09-27 12:50:27 +00:00
parent f0d355dc5c
commit 4e7e89e8c9
2 changed files with 12 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2016-09-27 Oleg Endo <olegendo@gcc.gnu.org>
PR target/51244
* config/sh/sh.c (sh_rtx_costs): Fix return value of SET of movt and
movrt patterns. Match them before anything else in the SET case.
2016-09-27 Martin Liska <mliska@suse.cz>
PR gcov-profile/7970

View File

@ -3199,6 +3199,12 @@ sh_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED, int outer_code,
vector-move, so we have to provide the correct cost in the number
of move insns to load/store the reg of the mode in question. */
case SET:
if (sh_movt_set_dest (x) != NULL || sh_movrt_set_dest (x) != NULL)
{
*total = COSTS_N_INSNS (1);
return true;
}
if (register_operand (SET_DEST (x), VOIDmode)
&& (register_operand (SET_SRC (x), VOIDmode)
|| satisfies_constraint_Z (SET_SRC (x))))
@ -3208,10 +3214,6 @@ sh_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED, int outer_code,
/ mov_insn_size (mode, TARGET_SH2A));
return true;
}
if (sh_movt_set_dest (x) != NULL || sh_movrt_set_dest (x) != NULL)
return COSTS_N_INSNS (1);
return false;
/* The cost of a mem access is mainly the cost of the address mode. */