// RUN: clang-cc %s -verify -fsyntax-only

void c1(int *a);

extern int g1 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
int g2 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
static int g3 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}

void t1()
{
    int v1 __attribute((cleanup)); // expected-error {{attribute requires 1 argument(s)}}
    int v2 __attribute((cleanup(1, 2))); // expected-error {{attribute requires 1 argument(s)}}
    
    static int v3 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
    
    int v4 __attribute((cleanup(h))); // expected-error {{'cleanup' argument 'h' not found}}

    int v5 __attribute((cleanup(c1)));
    int v6 __attribute((cleanup(v3))); // expected-error {{'cleanup' argument 'v3' is not a function}}
}

struct s {
    int a, b;
};

void c2();
void c3(struct s a);

void t2()
{
    int v1 __attribute__((cleanup(c2))); // expected-error {{'cleanup' function 'c2' must take 1 parameter}}
    int v2 __attribute__((cleanup(c3))); // expected-error {{'cleanup' function 'c3' parameter has type 'struct s' which is incompatible with type 'int *'}}
}

// This is a manufactured testcase, but gcc accepts it...
void c4(_Bool a);
void t4() {
  __attribute((cleanup(c4))) void* g;
}

