http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #10 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Fri Feb 21 13:18:54 2014
New Revision: 207992
URL: http://gcc.gnu.org/viewcvs?rev=207992root=gccview=rev
Log:
2014-02-21 Richard Biener rguent...@suse.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
Richard Biener rguenth at gcc dot gnu.org changed:
What|Removed |Added
Status|NEW |ASSIGNED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
extern void abort (void);
static void
foo (short *out, const short *lp, const short *hp, unsigned samples)
{
int x, target;
for (x = 0, target = 0; x (int)samples; x += 2,
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
And with less convoluted vectorized code but still broken (avoids integer
promotions):
extern void abort (void);
static void
foo (int *out, const int *lp, const int *hp, unsigned
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
But you can clearly see that this isn't valid vectorization because of the
read-after-write dependence of out[x].
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Richard Biener from comment #6)
But you can clearly see that this isn't valid vectorization because of the
read-after-write dependence of out[x].
Well, only after
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #8 from Marek Polacek mpolacek at gcc dot gnu.org ---
Note that in r196871 this was broken, but r196872 is fine.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60276
--- Comment #9 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 32183
-- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32183action=edit
patch
Patch I am testing.