On Tue, 2017-12-12 at 20:50 +0100, Jakub Jelinek wrote:
> On Tue, Dec 12, 2017 at 01:40:41PM -0600, Aaron Sawdey wrote:
> > 2017-12-12  Aaron Sawdey  <acsaw...@linux.vnet.ibm.com>
> > 
> >     PR target/82190
> >     * config/rs6000/rs6000-string.c (expand_block_move,
> >     expand_strn_compare): fix set_mem_size() calls.
> 
> That should be capitalized: Fix instead of fix

[wrong patch deleted]

> Is this the patch you meant to attach?  First of all, it only changes
> expand_block_move, not expand_strn_compare, and the change seems more
> like an optimization of P8/P9 rather than actual fix (otherwise,
> wouldn't
> it fail on say P7?).
> 
> > +  return 0;
> > +}
> > +
> > +
> 
> Please avoid unnecessary trailing whitespace.
> 

Jakub,
  Yes that is a different patch unrelated to the 82190 fix. I've
attached the correct patch.

Thanks!
   Aaron

-- 
Aaron Sawdey, Ph.D.  acsaw...@linux.vnet.ibm.com
050-2/C113  (507) 253-7520 home: 507/263-0782
IBM Linux Technology Center - PPC Toolchain
Index: gcc/config/rs6000/rs6000-string.c
===================================================================
--- gcc/config/rs6000/rs6000-string.c   (revision 255585)
+++ gcc/config/rs6000/rs6000-string.c   (working copy)
@@ -459,7 +459,7 @@
          rtx src1_reg = copy_addr_to_reg (XEXP (src1, 0));
          src1 = replace_equiv_address (src1, src1_reg);
        }
-      set_mem_size (src1, cmp_bytes);
+      set_mem_size (src1, load_mode_size);
 
       if (!REG_P (XEXP (src2, 0)))
        {
@@ -466,7 +466,7 @@
          rtx src2_reg = copy_addr_to_reg (XEXP (src2, 0));
          src2 = replace_equiv_address (src2, src2_reg);
        }
-      set_mem_size (src2, cmp_bytes);
+      set_mem_size (src2, load_mode_size);
 
       do_load_for_compare (tmp_reg_src1, src1, load_mode);
       do_load_for_compare (tmp_reg_src2, src2, load_mode);
@@ -937,7 +937,7 @@
          rtx src1_reg = copy_addr_to_reg (XEXP (src1, 0));
          src1 = replace_equiv_address (src1, src1_reg);
        }
-      set_mem_size (src1, cmp_bytes);
+      set_mem_size (src1, load_mode_size);
 
       if (!REG_P (XEXP (src2, 0)))
        {
@@ -944,7 +944,7 @@
          rtx src2_reg = copy_addr_to_reg (XEXP (src2, 0));
          src2 = replace_equiv_address (src2, src2_reg);
        }
-      set_mem_size (src2, cmp_bytes);
+      set_mem_size (src2, load_mode_size);
 
       do_load_for_compare (tmp_reg_src1, src1, load_mode);
       do_load_for_compare (tmp_reg_src2, src2, load_mode);
@@ -1096,7 +1096,7 @@
          rtx src1_reg = copy_addr_to_reg (XEXP (src1, 0));     
          src1 = replace_equiv_address (src1, src1_reg);
        }
-      set_mem_size (src1, cmp_bytes);
+      set_mem_size (src1, load_mode_size);     
 
       if (!REG_P (XEXP (src2, 0)))
        {
@@ -1103,7 +1103,7 @@
          rtx src2_reg = copy_addr_to_reg (XEXP (src2, 0));
          src2 = replace_equiv_address (src2, src2_reg);
        }
-      set_mem_size (src2, cmp_bytes);
+      set_mem_size (src2, load_mode_size);
 
       /* Construct call to strcmp/strncmp to compare the rest of the string.  */
       if (no_length)
Index: gcc/testsuite/gcc.dg/pr82190.c
===================================================================
--- gcc/testsuite/gcc.dg/pr82190.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/pr82190.c	(working copy)
@@ -0,0 +1,20 @@
+/* PR target/82190 */
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-optimize-strlen -fweb" } */
+
+char src[64] __attribute__ ((aligned)) = "aaaaaaa";
+char dst[64] __attribute__ ((aligned));
+
+int
+main ()
+{
+  __builtin_memcpy (dst, src, 6);
+  if (__builtin_memcmp (dst, src, 6))
+    __builtin_abort ();
+
+  __builtin_memcpy (dst, src, 7);
+  if (__builtin_memcmp (dst, src, 7))
+    __builtin_abort ();
+
+  return 0;
+}

Reply via email to