diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce0ac90a24e..f864337629d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-05-29 Jakub Jelinek + + PR middle-end/40291 + * builtins.c (expand_builtin_memcmp): Convert len to sizetype + before expansion. + 2009-05-29 Andrey Belevantsev PR rtl-optimization/40101 diff --git a/gcc/builtins.c b/gcc/builtins.c index 783fce4ec68..6d9f2826689 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4189,7 +4189,7 @@ expand_builtin_memcmp (tree exp, rtx target, enum machine_mode mode) arg1_rtx = get_memory_rtx (arg1, len); arg2_rtx = get_memory_rtx (arg2, len); - arg3_rtx = expand_normal (len); + arg3_rtx = expand_normal (fold_convert (sizetype, len)); /* Set MEM_SIZE as appropriate. */ if (GET_CODE (arg3_rtx) == CONST_INT) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2c1fc0334f7..e8577143ff8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2009-05-29 Jakub Jelinek + PR middle-end/40291 + * gcc.c-torture/compile/pr40291.c: New test. + PR target/40017 * gcc.target/powerpc/altivec-types-1.c: Don't expect error for __vector _Bool. @@ -22,7 +25,6 @@ * g++.dg/template/canon-type-6.C: Likewise. * g++.dg/template/canon-type-7.C: Likewise. - 2009-05-28 Dave Korn Uros Bizjak Danny Smith diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40291.c b/gcc/testsuite/gcc.c-torture/compile/pr40291.c new file mode 100644 index 00000000000..d50bbee6608 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr40291.c @@ -0,0 +1,7 @@ +/* PR middle-end/40291 */ + +int +foo (void *x, char *y, unsigned long long z) +{ + return memcmp (x, y, z); +}