111
|
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))));
|