re PR target/39386 ([avr] different computation results for O1 and O0 executables)

PR target/39386
	* config/avr/avr.c (out_shift_with_cnt): Use tmp_reg as
	shift counter for x << x and x >> x shifts.

From-SVN: r176756
This commit is contained in:
Georg-Johann Lay 2011-07-25 15:41:55 +00:00 committed by Georg-Johann Lay
parent 1a79cb7341
commit f4da258f52
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2011-07-25 Georg-Johann Lay <avr@gjlay.de>
PR target/39386
* config/avr/avr.c (out_shift_with_cnt): Use tmp_reg as
shift counter for x << x and x >> x shifts.
2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR target/47124

View File

@ -3147,8 +3147,11 @@ out_shift_with_cnt (const char *templ, rtx insn, rtx operands[],
}
else if (register_operand (operands[2], QImode))
{
if (reg_unused_after (insn, operands[2]))
op[3] = op[2];
if (reg_unused_after (insn, operands[2])
&& !reg_overlap_mentioned_p (operands[0], operands[2]))
{
op[3] = op[2];
}
else
{
op[3] = tmp_reg_rtx;