OSDN Git Service

PR middle-end/40291
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 May 2009 15:38:20 +0000 (15:38 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 May 2009 15:38:20 +0000 (15:38 +0000)
* builtins.c (expand_builtin_memcmp): Convert len to sizetype
before expansion.

* gcc.c-torture/compile/pr40291.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147978 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr40291.c [new file with mode: 0644]

index ce0ac90..f864337 100644 (file)
@@ -1,3 +1,9 @@
+2009-05-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/40291
+       * builtins.c (expand_builtin_memcmp): Convert len to sizetype
+       before expansion.
+
 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
 
        PR rtl-optimization/40101
index 783fce4..6d9f282 100644 (file)
@@ -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)
index 2c1fc03..e857714 100644 (file)
@@ -1,5 +1,8 @@
 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
 
+       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  <dave.korn.cygwin@gmail.com>
             Uros Bizjak  <ubizjak@gmail.com>
             Danny Smith  <dansmister@gmail.com>
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40291.c b/gcc/testsuite/gcc.c-torture/compile/pr40291.c
new file mode 100644 (file)
index 0000000..d50bbee
--- /dev/null
@@ -0,0 +1,7 @@
+/* PR middle-end/40291 */
+
+int
+foo (void *x, char *y, unsigned long long z)
+{
+  return memcmp (x, y, z);
+}