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