------- Comment #6 from irar at il dot ibm dot com 2008-09-21 07:54 ------- (In reply to comment #5) > The data dependence on the previous loop is clearly not considered, the loop > is > vectorized as if c on the rhs and c on the lhs were different non-overlapping > arrays. >
The data dependence analysis returns chrec_known for that ddr (probably getting confused by *&s.c[0] and *&s.c[1] base objects), so the vectorizer thinks they are independent and vectorizes the loop. *D.1659_13 base_address: &s.c[0] offset from base address: 0 constant offset from base address: 0 step: 4 aligned to: 128 base_object: *&s.c[0] symbol tag: SMT.62 *D.1655_9 base_address: &s.c[1] offset from base address: 0 constant offset from base address: 0 step: 4 aligned to: 128 base_object: *&s.c[1] symbol tag: SMT.62 (compute_affine_dependence (stmt_a = D.1660_14 = *D.1659_13; ) (stmt_b = *D.1655_9 = D.1664_23; ) ) -- irar at il dot ibm dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rakdver at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37573