1 /* { dg-do compile { target init_priority } } */
2 
3 /* Priorities must be in the range [0, 65535].  */
4 void c1()
5      __attribute__((constructor (-1))); /* { dg-error "priorities" } */
6 void c2()
7      __attribute__((constructor (65536))); /* { dg-error "priorities" } */
8 void d1()
9      __attribute__((destructor (-1))); /* { dg-error "priorities" } */
10 void d2()
11      __attribute__((destructor (65536))); /* { dg-error "priorities" } */
12 
13 /* Priorities 0-100 are reserved for system libraries.  */
14 void c3()
15      __attribute__((constructor (50))); /* { dg-warning "reserved" } */
16 void d3()
17      __attribute__((constructor (50))); /* { dg-warning "reserved" } */
18 
19 /* Priorities must be integral constants.  */
20 
21 /* Pointers, even with constant values, are not allowed.  */
22 void c4()
23      __attribute__((constructor ((void*) 500))); /* { dg-error "priorities" } */
24 void d4()
25      __attribute__((destructor ((void*) 500))); /* { dg-error "priorities" } */
26 
27 /* Integer variables are not allowed.  */
28 int i;
29 void c5()
30      __attribute__((constructor ((i)))); /* { dg-error "priorities" } */
31 void d5()
32      __attribute__((destructor ((i)))); /* { dg-error "priorities" } */
33 
34 /* Enumeration constants are allowed.  */
35 enum E { e = 500 };
36 void c6()
37      __attribute__((constructor ((e))));
38 void d6()
39      __attribute__((destructor ((e))));
40