This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/55614] [4.6/4.7 Regression] vector extensions cause movdqa to be generated for memcpy on unaligned buffer


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55614

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-12-07
                 CC|                            |ebotcazou at gcc dot
                   |                            |gnu.org, jakub at gcc dot
                   |                            |gnu.org, jamborm at gcc dot
                   |                            |gnu.org
   Target Milestone|---                         |4.6.4
            Summary|vector extensions cause     |[4.6/4.7 Regression] vector
                   |movdqa to be generated for  |extensions cause movdqa to
                   |memcpy on unaligned buffer  |be generated for memcpy on
                   |                            |unaligned buffer
     Ever Confirmed|0                           |1

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-07 14:05:29 UTC ---
Reduced testcase:

typedef unsigned int T __attribute__ ((vector_size (16)));
extern int rand ();

void
foo (unsigned char *x, unsigned long y)
{
  union { T v; } r;
  T e = { 0, rand (), 0, 0 };
  r.v = e;
  while (y >= 16)
    {
      __builtin_memcpy (x, &r, 16);
      x += 16;
      y -= 16;
    }
}

int
main ()
{
  unsigned char b[32];
  foo (b + 1, 16);
  return b[16];
}

Works on trunk, likely (haven't bisected it to the last few revs, so it is
range r161958 (last known good) and r161976 (first broken)) introduced by
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=161974
and fixed by
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=186501
(or just made latent?).
CCing authors of corresponding changes.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]