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 ...