aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-12-02 18:14:18 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2008-12-02 18:14:18 +0100
commitfe5c443ea50fd90cba2352d5482d709fd2511d5b (patch)
tree39bbecf80e9d1c5b798a7278196759f5812197f4 /gcc/builtins.c
parent09ce620eab8a5597b706f25d918c21643c0a9f0b (diff)
downloadgcc-fe5c443ea50fd90cba2352d5482d709fd2511d5b.zip
gcc-fe5c443ea50fd90cba2352d5482d709fd2511d5b.tar.gz
gcc-fe5c443ea50fd90cba2352d5482d709fd2511d5b.tar.bz2
re PR middle-end/38343 (ice for legal code with -O2)
PR middle-end/38343 * builtins.c (fold_builtin_memory_op): Convert len to sizetype before using it in POINTER_PLUS_EXPR. * gcc.c-torture/compile/pr38343-2.c: New test. From-SVN: r142363
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 3406667..444baa6 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -8993,6 +8993,7 @@ fold_builtin_memory_op (tree dest, tree src, tree len, tree type, bool ignore, i
len = fold_build2 (MINUS_EXPR, TREE_TYPE (len), len,
ssize_int (1));
+ len = fold_convert (sizetype, len);
dest = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (dest), dest, len);
dest = fold_convert (type, dest);
if (expr)