aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2008-09-28 09:17:30 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2008-09-28 09:17:30 +0000
commit86cfb27a7d6f38b1138ad376738ec6690dfe2e8b (patch)
tree0731ffe63c84669ad48a81762dda973a70625d68
parent57cb79efa40dd98e6250d5f8e49eb608c0abc15b (diff)
downloadgcc-86cfb27a7d6f38b1138ad376738ec6690dfe2e8b.zip
gcc-86cfb27a7d6f38b1138ad376738ec6690dfe2e8b.tar.gz
gcc-86cfb27a7d6f38b1138ad376738ec6690dfe2e8b.tar.bz2
expmed.c (store_fixed_bit_field): Always use convert_to_mode in order to convert between modes.
* expmed.c (store_fixed_bit_field): Always use convert_to_mode in order to convert between modes. (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode. From-SVN: r140730
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/expmed.c10
2 files changed, 8 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8782ad2..c9fc7ae 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
+ order to convert between modes.
+ (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
+
2008-09-27 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 6099c4b..ae5ad0a 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -949,13 +949,7 @@ store_fixed_bit_field (rtx op0, unsigned HOST_WIDE_INT offset,
&& bitpos + bitsize != GET_MODE_BITSIZE (mode));
if (GET_MODE (value) != mode)
- {
- if ((REG_P (value) || GET_CODE (value) == SUBREG)
- && GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (value)))
- value = gen_lowpart (mode, value);
- else
- value = convert_to_mode (mode, value, 1);
- }
+ value = convert_to_mode (mode, value, 1);
if (must_and)
value = expand_binop (mode, and_optab, value,
@@ -1348,7 +1342,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
? bitpos + bitsize == BITS_PER_WORD
: bitpos == 0)))
&& ((!MEM_P (op0)
- && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode),
+ && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode1),
GET_MODE_BITSIZE (GET_MODE (op0)))
&& GET_MODE_SIZE (mode1) != 0
&& byte_offset % GET_MODE_SIZE (mode1) == 0)