I am having a problem getting Cilk array notation to play well with Gcc auto-vectorization (i.e., -ftree-vectorize). For example,
(Let's refer to the code snippet at http://www.cilkplus.org/tutorial-add-arrays as copy.c).
If I run
> gcc -fcilkplus -lcilkrts -Wall -O3 copy.c
using "gcc version 4.8.1 20130520 (prerelease) (GCC)" downloaded from https://www.cilkplus.org/download, I get a functionally correct code, but only the reference loop (i.e.,
for (int i = 0; i < array_size; i++) c[i] = a[i] + b[i];
will vectorize (according to both -ftree-vectorizer-verbose=1 and manual assembly inspection). I am having similar luck when explicitely using -ftree-vectorize without -O3. I have verified that -O3 is not pruning the loops and the problem is still the same with other vector operators.
The simplest problem is of course a missing flag, but I don't see documentation for such a flag (beyond -fcilkplus which is needed for array notation to compile). Further, it seems that the simplest loops described in array notation do vectorize; e.g., 'c[:] = 5;'
Thanks for any tips!