I found that ifort (and gfortran) create a temporary for the following array assignment:
presumably because of the possibility that inc is less than zero. The result is stored in a stride 1 temporary and then copied to the destination, all reporting vectorization.
If I write
do i= 1,n-inc,inc