This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/66873] New: fortran variant of outer-1.c not parallelized by autopar
- From: "vries at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 14 Jul 2015 22:39:23 +0000
- Subject: [Bug tree-optimization/66873] New: fortran variant of outer-1.c not parallelized by autopar
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66873
Bug ID: 66873
Summary: fortran variant of outer-1.c not parallelized by
autopar
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vries at gcc dot gnu.org
Target Milestone: ---
Consider this example, a fortran version of autopar/outer-1.c:
...
program main
implicit none
integer, parameter :: n = 500
integer, dimension (0:n-1, 0:n-1) :: x
integer :: i, j, ii, jj
do ii = 0, n - 1
do jj = 0, n - 1
x(ii, jj) = ii + jj + 3
end do
end do
do i = 0, n - 1
do j = 0, n - 1
if (x(i, j) .ne. i + j + 3) call abort
end do
end do
end program main
...
When trying to parallelize this using -O2 -ftree-parallelize-loops=2, it fails
on the dependencies:
...
(Data Dep:
#(Data Ref:
# bb: 4
# stmt: x[_12] = _14;
# ref: x[_12];
# base_object: x;
# Access function 0: {{0, +, 1}_3, +, 500}_4
#)
#(Data Ref:
# bb: 4
# stmt: x[_12] = _14;
# ref: x[_12];
# base_object: x;
# Access function 0: {{0, +, 1}_3, +, 500}_4
#)
access_fn_A: {{0, +, 1}_3, +, 500}_4
access_fn_B: {{0, +, 1}_3, +, 500}_4
(subscript
iterations_that_access_an_element_twice_in_A: [0]
last_conflict: scev_not_known
iterations_that_access_an_element_twice_in_B: [0]
last_conflict: scev_not_known
(Subscript distance: 0 ))
inner loop index: 0
loop nest: (3 4 )
distance_vector: 0 0
distance_vector: 500 -1
direction_vector: = =
direction_vector: + -
)
FAILED: data dependencies exist across iterations
...