Diagnostic 15321: loop was not vectorized: unsupported loop structure

Cause:

This vectorization message is emitted when there are multiple exit points from a given loop. Here the for loop has two different points from the loop (Due to the call to exit(1)) and is not a good candidate for vectorization.In short single entry, multiple exit points will lead to this diagnostic. Below is an example for this scenario.

Example:

#include<iostream>
#include<stdlib.h>
int main(){
double a[16], b[16], c[16];
  for (int i = 0; i < 16; i++) {
    if (a[i] != 5 ||
        b[i] != 2 ||
        c[i] != 0) {
      printf("failedn");
      exit(1);
      }
  }
return 0;
}


$ icc -vec-report2 example21.cc -c
example21.cc(5): (col. 3) remark: loop was not vectorized: unsupported loop structure

 

For more complete information about compiler optimizations, see our Optimization Notice.