template <int N> void foo (int *a, int *b, int *c) { #pragma simd vectorlength (N) for (int i = 0; i < N; i++) a[i] = b[i] * c[i]; } void bar (int *a, int *b, int *c) { foo <64> (a, b, c); } ICEs with -fcilkplus, so clearly tsubst on it is not performed correctly.
Confirmed.
Cilk Plus, deprecated for 7.x, will not be in 8.x.