1 /* { dg-do compile } */ 2 /* { dg-options "-O3" } */ 3 4 double *my_alloc1 (int len) __attribute__((__assume_aligned__ (16))); 5 double *my_alloc2 (int len) __attribute__((__assume_aligned__ (32, 16))); 6 7 void test1(int len)8test1 (int len) 9 { 10 int i; 11 double *__restrict o1 = my_alloc1 (len); 12 double *__restrict o2 = my_alloc1 (len); 13 double *__restrict o3 = my_alloc1 (len); 14 double *__restrict i1 = my_alloc1 (len); 15 double *__restrict i2 = my_alloc1 (len); 16 for (i = 0; i < len; ++i) 17 { 18 o1[i] = i1[i] * i2[i]; 19 o2[i] = i1[i] + i2[i]; 20 o3[i] = i1[i] - i2[i]; 21 } 22 } 23 24 void test2(int len)25test2 (int len) 26 { 27 int i; 28 double *__restrict o1 = my_alloc2 (len); 29 double *__restrict o2 = my_alloc2 (len); 30 double *__restrict o3 = my_alloc2 (len); 31 double *__restrict i1 = my_alloc2 (len); 32 double *__restrict i2 = my_alloc2 (len); 33 for (i = 0; i < len; ++i) 34 { 35 o1[i] = i1[i] * i2[i]; 36 o2[i] = i1[i] + i2[i]; 37 o3[i] = i1[i] - i2[i]; 38 } 39 } 40