cris.md ("reload_out<mode>"): Mark operand 2 as earlyclobber.

* config/cris/cris.md ("reload_out<mode>"): Mark operand 2 as
	earlyclobber.
	* targhooks.c (default_secondary_reload): Don't require operand 2
	for an input reload to be earlyclobber.

From-SVN: r107517
This commit is contained in:
Hans-Peter Nilsson 2005-11-25 20:15:27 +00:00 committed by Hans-Peter Nilsson
parent dacfe88f94
commit 11e30dd8f2
3 changed files with 16 additions and 4 deletions

View file

@ -1,3 +1,10 @@
2005-11-25 Hans-Peter Nilsson <hp@axis.com>
* config/cris/cris.md ("reload_out<mode>"): Mark operand 2 as
earlyclobber.
* targhooks.c (default_secondary_reload): Don't require operand 2
for an input reload to be earlyclobber.
2005-11-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
* fold-const.c (negate_mathfn_p): Fix comment and add support

View file

@ -1151,7 +1151,7 @@
"")
(define_expand "reload_out<mode>"
[(set (match_operand:BW 2 "register_operand" "=r")
[(set (match_operand:BW 2 "register_operand" "=&r")
(match_operand:BW 1 "register_operand" "x"))
(set (match_operand:BW 0 "memory_operand" "=m")
(match_dup 2))]

View file

@ -514,10 +514,15 @@ default_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x ATTRIBUTE_UNUSED,
}
scratch_constraint = insn_data[(int) icode].operand[2].constraint;
/* The scratch register's constraint must start with "=&". */
/* The scratch register's constraint must start with "=&",
except for an input reload, where only "=" is necessary,
and where it might be beneficial to re-use registers from
the input. */
gcc_assert (scratch_constraint[0] == '='
&& scratch_constraint[1] == '&');
scratch_constraint += 2;
&& (in_p || scratch_constraint[1] == '&'));
scratch_constraint++;
if (*scratch_constraint == '&')
scratch_constraint++;
scratch_letter = *scratch_constraint;
scratch_class
= (scratch_letter == 'r' ? GENERAL_REGS