https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106365

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 53328
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53328&action=edit
patch

The attached now also handles .LEN_STORE for

int __attribute__((noinline,noclone))
foo ()
{
  int out[10];
  int i;
  for (i = 0; i < 10; ++i)
    {
      out[i] = i;
    }
  return out[9];
}

where I can see

   <bb 2> [local count: 97603129]:
-  _13 = { 4, 5, 6, 7 };
   MEM <vector(4) int> [(int *)&out] = { 0, 1, 2, 3 };
-  vectp_out.7_15 = &out + 16;
-  ivtmp_16 = 1;
-  _20 = _13 + { 4, 4, 4, 4 };
-  MEM <vector(4) int> [(int *)vectp_out.7_15] = _13;
-  vectp_out.7_22 = vectp_out.7_15 + 16;
-  ivtmp_25 = ivtmp_16 + 1;
-  _28 = { 12, 13, 14, 15 };
-  vect_33 = { 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0 };
-  .LEN_STORE (&MEM <int[10]> [(void *)&out + 32B], 128B, 8, vect_33, 0);
-  vectp_out.10_31 = &MEM <int[10]> [(void *)&out + 32B] + 16;
-  ivtmp_36 = 16;
-  _39 = MIN_EXPR <ivtmp_36, 8>;
-  _40 = 8 - _39;
-  _41 = MIN_EXPR <_40, 16>;
-  _4 = out[9];
+  MEM <vector(4) int> [(int *)&out + 16B] = { 4, 5, 6, 7 };
+  .LEN_STORE (&MEM <int[10]> [(void *)&out + 32B], 128B, 8, { 8, 0, 0, 0, 9,
0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0 }, 0);
   out ={v} {CLOBBER(eol)};
-  return _4;
+  return 9;

in the diff from cunroll to fre4.

Reply via email to