https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114210
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Exactly like the following standard C23 code: ``` void nonrestirct(); void restirctcall(); void foo (int* a, int* __restrict b, int n); void foo (int* a, int* b, int n) { typeof(b) c = b; _Generic (&c , int * __restrict*: restirctcall(), int **: nonrestirct() ); // calls nonrestirct } void foo1 (int* a, int* b, int n); void foo1 (int* a, int* __restrict b, int n) { typeof(b) c = b; _Generic (&c , int * __restrict*: restirctcall(), int **: nonrestirct() ); // calls restirctcall } ```