diff options
author | Alexander Kabaev <kan@FreeBSD.org> | 2005-06-03 03:28:44 +0000 |
---|---|---|
committer | Alexander Kabaev <kan@FreeBSD.org> | 2005-06-03 03:28:44 +0000 |
commit | d51085f37e16c95804f0fdabb7b1226e4b4e7de9 (patch) | |
tree | f0dc8ad34f9fcaf27052e24e893a4284b5fee6e9 /contrib/gcc/expmed.c | |
parent | 1689e31de64dad8b8826dc924a82c7ba59a54bf4 (diff) | |
download | src-d51085f37e16c95804f0fdabb7b1226e4b4e7de9.tar.gz src-d51085f37e16c95804f0fdabb7b1226e4b4e7de9.zip |
Gcc 3.4.4 release.
Notes
Notes:
svn path=/vendor/gcc/dist/; revision=146895
Diffstat (limited to 'contrib/gcc/expmed.c')
-rw-r--r-- | contrib/gcc/expmed.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/contrib/gcc/expmed.c b/contrib/gcc/expmed.c index e8b508b14adb..a8039346dd2a 100644 --- a/contrib/gcc/expmed.c +++ b/contrib/gcc/expmed.c @@ -289,6 +289,7 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitpos = bitnum % unit; rtx op0 = str_rtx; int byte_offset; + rtx orig_value; enum machine_mode op_mode = mode_for_extraction (EP_insv, 3); @@ -568,6 +569,7 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, corresponding size. This can occur on a machine with 64 bit registers that uses SFmode for float. This can also occur for unaligned float structure fields. */ + orig_value = value; if (GET_MODE_CLASS (GET_MODE (value)) != MODE_INT && GET_MODE_CLASS (GET_MODE (value)) != MODE_PARTIAL_INT) value = gen_lowpart ((GET_MODE (value) == VOIDmode @@ -634,7 +636,7 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, /* Fetch that unit, store the bitfield in it, then store the unit. */ tempreg = copy_to_reg (op0); - store_bit_field (tempreg, bitsize, bitpos, fieldmode, value, + store_bit_field (tempreg, bitsize, bitpos, fieldmode, orig_value, total_size); emit_move_insn (op0, tempreg); return value; |