/* { dg-do run } */ | |
extern void abort (void); | |
static inline __attribute__((always_inline)) void | |
copy(int *restrict a, int *restrict b) | |
{ | |
*b = *a; | |
*a = 7; | |
} | |
void __attribute__((noinline)) | |
floppy(int mat[static 2], unsigned idxs[static 3]) | |
{ | |
for (int i = 0; i < 3; i++) | |
copy(&mat[i%2], &mat[idxs[i]]); | |
} | |
int main() | |
{ | |
int mat[2] = {10, 20}; | |
unsigned idxs[3] = {1, 0, 1}; | |
floppy(mat, idxs); | |
if (mat[0] != 7 || mat[1] != 10) | |
abort (); | |
return 0; | |
} |