From 616f21dfdebc8f32cc5502d19eb248002911e42c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 29 May 2009 17:38:20 +0200 Subject: re PR middle-end/40291 (ICE on unprototyped memcmp with long long last argument) PR middle-end/40291 * builtins.c (expand_builtin_memcmp): Convert len to sizetype before expansion. * gcc.c-torture/compile/pr40291.c: New test. From-SVN: r147978 --- gcc/ChangeLog | 6 ++++++ gcc/builtins.c | 2 +- gcc/testsuite/ChangeLog | 4 +++- gcc/testsuite/gcc.c-torture/compile/pr40291.c | 7 +++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr40291.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce0ac90..f864337 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 783fce4..6d9f282 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 2c1fc03..e857714 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 0000000..d50bbee --- /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); +} -- cgit v1.1