http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59651
--- Comment #1 from Bingfeng Mei <bmei at broadcom dot com> ---
That is interesting. On x86-64, GCC does say it cannot determine dist vector
between a[3] & a[b] and needs run-time aliasing test. In the end it gives up
due to too few iterations.
note: === vect_analyze_data_ref_dependences ===
(compute_affine_dependence
stmt_a: _5 = a[3];
stmt_b: a[b.0_16] = _7;
(analyze_overlapping_iterations
(chrec_a = 3)
(chrec_b = {3, +, -1}_1)
(analyze_siv_subscript
)
(overlap_iterations_a = [0])
(overlap_iterations_b = [0]))
(Dependence relation cannot be represented by distance vector.)
)
(compute_affine_dependence
stmt_a: _5 = a[3];
stmt_b: _5 = a[3];
(analyze_overlapping_iterations
(chrec_a = 3)
(chrec_b = 3)
(overlap_iterations_a = [0])
(overlap_iterations_b = [0]))
)
(compute_affine_dependence
stmt_a: a[b.0_16] = _7;
stmt_b: a[b.0_16] = _7;
(analyze_overlapping_iterations
(chrec_a = {3, +, -1}_1)
(chrec_b = {3, +, -1}_1)
(overlap_iterations_a = [0])
(overlap_iterations_b = [0]))
)
/projects/firepath_tools1_scratch/bmei/trunk/gcc/testsuite/gcc.dg/torture/pr52943.c:13:7:
note: versioning for alias required: bad dist vector for a[3] and a[b.0_16]
/projects/firepath_tools1_scratch/bmei/trunk/gcc/testsuite/gcc.dg/torture/pr52943.c:13:7:
note: mark for run-time aliasing test between a[3] and a[b.0_16]