--- Comment #4 from changpeng dot fang at amd dot com 2010-07-28 18:22
---
Andrew's example is exactly what the prefetch sees for the test case (in the
bug description). Unfortunately, the prefetch pass could not recognize that
vect_pa.6_24 and vect_pa.20_38 are exactly the same
--- Comment #5 from changpeng dot fang at amd dot com 2010-07-28 18:28
---
Thing is a little complicate if we change the code to:
a[i] = a[i+1] + beta * b[i];
The prefetch pass want to group a[i] and a[i+1], i.e. they have
the same base address with an offset of 4 bytes.
--
--- Comment #2 from pinskia at gcc dot gnu dot org 2010-07-24 20:32 ---
(In reply to comment #1)
The direct reason is that prefetching could not differentiate the base
addresses
of the vectorized load and store (of a[i]):
*vect_pa.6_24
*vect_pa.19_37
Here is a testcase which shows
--- Comment #3 from rakdver at kam dot mff dot cuni dot cz 2010-07-24
20:41 ---
Subject: Re: Redundant prefetches for some
loops (vectorizer produced ones too)
The direct reason is that prefetching could not differentiate the base
addresses
of the vectorized load and