File1: #include <stdio.h>\nint main(int argc, char* argv[]) \n{\n  int i,j;\n  int n=100, m=100;\n  double b[n][m];\n#pragma omp parallel for private(j)\n  for (i=1;i<n;i++)\n    for (j=0;j<m;j++) // Note there will be out of bound access\n      b[i][j]=b[i][j-1];\n\n  printf ("b[50][50]=%f\n",b[50][50]);\n\n  return 0;     \n}\n  \n
File2: program DRB014_outofbounds_orig_yes\n    use omp_lib\n    implicit none\n\n    integer :: i, j, n, m\n    real, dimension (:,:), allocatable :: b\n\n    n = 100\n    m = 100\n\n    allocate (b(n,m))\n\n    !$omp parallel do private(i)\n    do j = 2, n\n        do i = 1, m\n            b(i,j) = b(i-1,j)\n        end do\n    end do\n    !$omp end parallel do\n    print*,"b(50,50)=",b(50,50)\n\n    deallocate(b)\nend program