aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2011-03-28 21:22:58 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2011-03-28 21:22:58 +0000
commit8a445129177df896f4f78170750120eac9c90e12 (patch)
tree80568baafe1e9bc6c32eea525f52e073d00899f9 /gcc
parent8060754453f32ae22612a63a2abe5f116c9bb687 (diff)
downloadgcc-8a445129177df896f4f78170750120eac9c90e12.zip
gcc-8a445129177df896f4f78170750120eac9c90e12.tar.gz
gcc-8a445129177df896f4f78170750120eac9c90e12.tar.bz2
builtins.c (expand_builtin_memset_args): Use gen_int_mode instead of GEN_INT.
gcc/ 2011-03-28 Richard Sandiford <richard.sandiford@linaro.org> * builtins.c (expand_builtin_memset_args): Use gen_int_mode instead of GEN_INT. From-SVN: r171632
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c11
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6af0e4c..eae6519 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-28 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * builtins.c (expand_builtin_memset_args): Use gen_int_mode
+ instead of GEN_INT.
+
2011-03-28 Eric Botcazou <ebotcazou@adacore.com>
* cfgexpand.c (expand_gimple_cond): Always set the source location and
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 1b93f3c..29274f4 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -3935,6 +3935,7 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
{
tree fndecl, fn;
enum built_in_function fcode;
+ enum machine_mode val_mode;
char c;
unsigned int dest_align;
rtx dest_mem, dest_addr, len_rtx;
@@ -3969,14 +3970,14 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
len_rtx = expand_normal (len);
dest_mem = get_memory_rtx (dest, len);
+ val_mode = TYPE_MODE (unsigned_char_type_node);
if (TREE_CODE (val) != INTEGER_CST)
{
rtx val_rtx;
val_rtx = expand_normal (val);
- val_rtx = convert_to_mode (TYPE_MODE (unsigned_char_type_node),
- val_rtx, 0);
+ val_rtx = convert_to_mode (val_mode, val_rtx, 0);
/* Assume that we can memset by pieces if we can store
* the coefficients by pieces (in the required modes).
@@ -3987,8 +3988,7 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
builtin_memset_read_str, &c, dest_align,
true))
{
- val_rtx = force_reg (TYPE_MODE (unsigned_char_type_node),
- val_rtx);
+ val_rtx = force_reg (val_mode, val_rtx);
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_memset_gen_str, val_rtx, dest_align,
true, 0);
@@ -4014,7 +4014,8 @@ expand_builtin_memset_args (tree dest, tree val, tree len,
true))
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_memset_read_str, &c, dest_align, true, 0);
- else if (!set_storage_via_setmem (dest_mem, len_rtx, GEN_INT (c),
+ else if (!set_storage_via_setmem (dest_mem, len_rtx,
+ gen_int_mode (c, val_mode),
dest_align, expected_align,
expected_size))
goto do_libcall;