// Clause: 6.7.4.2 — if the requirements implied by 'restrict' are not met for the lifetime, behavior is undefined.
#include <stdio.h>
void add(int n, int * restrict p, int * restrict q){
    for(int i=0;i<n;++i) p[i]+=q[i];
}
int main(void){
    int a[4]={1,2,3,4};
    add(4, a, a); // UB: overlapping restrict-qualified objects
    printf("%d\n", a[0]);
    return 0;
}
