1a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker// RUN: %clang_cc1 %s -verify -fsyntax-only -Wgcc-compat
2a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker
3a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Tokernamespace N {
4a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker  void c1(int *a) {}
5a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker}
6a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker
7a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Tokervoid c2(int *a) {}
8a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker
9a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Tokertemplate <typename Ty>
10a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Tokervoid c3(Ty *a) {}
11a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker
12a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Tokervoid t3() {
13a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker  int v1 __attribute__((cleanup(N::c1)));  // expected-warning  {{GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier}}
14a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker  int v2 __attribute__((cleanup(c2)));
15a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker  int v3 __attribute__((cleanup(c3<int>)));  // expected-warning  {{GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier}}
16a3bfa54f2ad8600fc1bb3d39b37e3cd5469ccbb6Alp Toker}
17