backport: re PR target/53033 ([avr]: Wrong register number for 3-byte loads via X)

Backport from 2012-04-19 mainline r186588.
	PR target/53033
	* config/avr/avr.c (avr_out_load_psi): Fix assembler template for
	the case *(X+const).

From-SVN: r186589
This commit is contained in:
Georg-Johann Lay 2012-04-19 11:33:01 +00:00 committed by Georg-Johann Lay
parent 3ac8d6cd10
commit 278e1b6634
2 changed files with 16 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2012-04-19 Georg-Johann Lay <avr@gjlay.de>
Backport from 2012-04-19 mainline r186588.
PR target/53033
* config/avr/avr.c (avr_out_load_psi): Fix assembler template for
the case *(X+const).
2012-04-18 Uros Bizjak <ubizjak@gmail.com>
* config/alpha/sync.md (fetchop_name): Change ior attribute to "or".

View File

@ -3476,15 +3476,16 @@ avr_out_load_psi (rtx insn, rtx *op, int *plen)
"mov r27,__tmp_reg__", op, plen, -6);
}
avr_asm_len ("adiw r26,%o1" CR_TAB
"ld r24,X+" CR_TAB
"ld r25,X+" CR_TAB
"ld r26,X", op, plen, -4);
avr_asm_len ("adiw r26,%o1" CR_TAB
"ld %A0,X+" CR_TAB
"ld %B0,X+" CR_TAB
"ld %C0,X", op, plen, -4);
if (reg_dest != REG_X - 2)
avr_asm_len ("sbiw r26,%o1+2", op, plen, 1);
if (reg_dest != REG_W
&& !reg_unused_after (insn, XEXP (base, 0)))
avr_asm_len ("sbiw r26,%o1+2", op, plen, 1);
return "";
return "";
}
if (reg_dest == reg_base)