I'm having an issue with a port from ifort 11.1 32-bit to 14.0.1 64-bit on a Linux platform. In the test case I've attached, the 11.1 compiler with -vec-report3 reports for line 35:
remark: loop was not vectorized: existence of vector dependence.
In the 14.0.1 compiler, no yea or nay is given about the vectorization of the loop starting on line 35. This poses no problem in the attached test case as the output is exactly as expected. I though that perhaps the lack of vector reporting may have something to do with the issue I'm seeing in the code from which the attached test case was derived. In that code, the analogue of array "x" is set to 6 and 7 in the "condition == .false." branch of the code as well, however in a debugger, the 6 is placed outside the bounds of the array:
(gdb) x/2i $rip => ....: movl $0x6,0x15f04b84(%rdi) ....: movl $0x7,0x15f04b88(%rdi,%rax,4) (gdb) p $rdi = 64 (gdb) p $rax = 0 (gdb) p &x = (PTR TO -> (INTEGER(4) (0:15,0:15))) 0x15f04bc8
The movl destination for 0x6 comes out to 0x15f04bc4 which is smaller than the start of the array. This issue does not occur if optimization is disabled.
Can anyone shed any light on what's happening here?