mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 02:20:39 +08:00
re PR target/53033 ([avr]: Wrong register number for 3-byte loads via X)
PR target/53033 * config/avr/avr.c (avr_out_load_psi): Fix assembler template for the case *(X+const). From-SVN: r186588
This commit is contained in:
parent
e4eb230d8d
commit
20955f5acf
@ -1,3 +1,9 @@
|
||||
2012-04-19 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
PR target/53033
|
||||
* config/avr/avr.c (avr_out_load_psi): Fix assembler template for
|
||||
the case *(X+const).
|
||||
|
||||
2012-04-19 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
|
||||
|
||||
* config/arm/sync.md (sync_optab): Change ior attribute to "or".
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user