re PR target/57909 ([ARM] ICE with internal memcpy and -mno-unaligned-access)

Fix PR target/57909.

2013-07-17  Yvan Roux  <yvan.roux@linaro.org>

        PR target/57909
        * config/arm/arm.c (gen_movmem_ldrd_strd): Fix unaligned load/store
        usage in HI mode.

From-SVN: r201005
This commit is contained in:
Yvan Roux 2013-07-17 11:39:14 +00:00 committed by Ramana Radhakrishnan
parent 167f68ede4
commit a1259a1302
2 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2013-07-17 Yvan Roux <yvan.roux@linaro.org>
PR target/57909
* config/arm/arm.c (gen_movmem_ldrd_strd): Fix unaligned load/store
usage in HI mode.
2013-07-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 2013-07-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be * config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be

View File

@ -12018,8 +12018,16 @@ gen_movmem_ldrd_strd (rtx *operands)
dst = adjust_address (dst, HImode, 0); dst = adjust_address (dst, HImode, 0);
src = adjust_address (src, HImode, 0); src = adjust_address (src, HImode, 0);
reg0 = gen_reg_rtx (SImode); reg0 = gen_reg_rtx (SImode);
emit_insn (gen_unaligned_loadhiu (reg0, src)); if (src_aligned)
emit_insn (gen_unaligned_storehi (dst, gen_lowpart (HImode, reg0))); emit_insn (gen_zero_extendhisi2 (reg0, src));
else
emit_insn (gen_unaligned_loadhiu (reg0, src));
if (dst_aligned)
emit_insn (gen_movhi (dst, gen_lowpart(HImode, reg0)));
else
emit_insn (gen_unaligned_storehi (dst, gen_lowpart (HImode, reg0)));
src = next_consecutive_mem (src); src = next_consecutive_mem (src);
dst = next_consecutive_mem (dst); dst = next_consecutive_mem (dst);
if (len == 2) if (len == 2)