O seguinte uso do qualificador restrito em C é válido ou comportamento indefinido?
#include <stdio.h>
int foo(float * restrict a) {
float a1 = *a;
float a2 = *(a+1);
float * restrict c = a;
*c = 1;
*(c+1) = 2;
// are compilers obliged to load a[0] and a[1] again?
printf("%f %f\n",*a,*(a+1));
printf("%f %f\n",a1, a2);
}
Obrigado