re PR target/29006 (Incorrect zeroing of unaligned 64-bit fields on MIPS targets)
authorRichard Sandiford <richard@codesourcery.com>
Sun, 10 Sep 2006 19:28:48 +0000 (19:28 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 10 Sep 2006 19:28:48 +0000 (19:28 +0000)
commit9226543b679c84014627a7bdec0503061b3af43d
treeb9dc496a59b71728c2401746553b841ebcbcaa38
parentca6f2eefa4d61ec714e0d63d39e9120ad1e72e66
re PR target/29006 (Incorrect zeroing of unaligned 64-bit fields on MIPS targets)

gcc/
PR target/29006
* config/mips/mips-protos.h (mips_mem_fits_mode_p): Declare.
* config/mips/mips.c (mips_expand_unaligned_store): Use the mode
returned by mode_for_size, rather than the mode of src itself,
to choose between 32-bit and 64-bit patterns.
(mips_mem_fits_mode_p): New function.
* config/mips/mips.md (mov_<load>l, mov_<load>r): Use it to check
that the size of the source matches the size of the destination.
(mov_<store>l, mov_<store>r): Likewise.

gcc/testsuite/
PR target/29006
* gcc.c-torture/execute/pr29006.c: New test.

From-SVN: r116822
gcc/ChangeLog
gcc/config/mips/mips-protos.h
gcc/config/mips/mips.c
gcc/config/mips/mips.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr29006.c [new file with mode: 0644]