Отлично, теперь, когда gcc стал более агрессивным в векторизации, например,
extern "C" __attribute__((optimize("no-tree-vectorize")))
/* Subroutine */
int s111_ (integer * ntimes, integer * ld, integer * n,
real * ctime, real * dtime,
real * __restrict a, real * b, real * c__, real * d__,
real * e, real * aa, real * bb, real * cc)
{
....
for (i__ = 2; i__ <= i__2; i__ += 2)
a[i__] = a[i__ - 1] + b[i__];
....
В приведенном выше случае удаление restrict
использовалось для выполнения работы, но теперь g ++ 6.0 не может быть остановлено векторизацией путем удаления __restrict
.