| // PR c++/79588 |
| // { dg-do compile } |
| // { dg-options "-Wrestrict" } |
| |
| void foo (char *__restrict, char *__restrict = __null); |
| |
| template <int N> |
| void |
| bar (char **p) |
| { |
| foo (p[0], p[0]); // { dg-warning "to 'restrict'-qualified parameter aliases with" } |
| foo (p[0], p[N]); // { dg-warning "to 'restrict'-qualified parameter aliases with" } |
| foo (p[0]); |
| } |
| |
| template <int N> |
| void |
| bar2 (char **p) |
| { |
| foo (p[0], p[0]); // { dg-warning "to 'restrict'-qualified parameter aliases with" } |
| foo (p[0], p[N]); // { dg-bogus "to 'restrict'-qualified parameter aliases with" } |
| foo (p[0]); |
| } |
| |
| void |
| baz (char **p) |
| { |
| bar<0> (p); |
| bar2<1> (p); |
| } |