40 lines
1.3 KiB
C
40 lines
1.3 KiB
C
/* { dg-do compile { target init_priority } } */
|
|
|
|
/* Priorities must be in the range [0, 65535]. */
|
|
void c1()
|
|
__attribute__((constructor (-1))); /* { dg-error "priorities" } */
|
|
void c2()
|
|
__attribute__((constructor (65536))); /* { dg-error "priorities" } */
|
|
void d1()
|
|
__attribute__((destructor (-1))); /* { dg-error "priorities" } */
|
|
void d2()
|
|
__attribute__((destructor (65536))); /* { dg-error "priorities" } */
|
|
|
|
/* Priorities 0-100 are reserved for system libraries. */
|
|
void c3()
|
|
__attribute__((constructor (50))); /* { dg-warning "reserved" } */
|
|
void d3()
|
|
__attribute__((constructor (50))); /* { dg-warning "reserved" } */
|
|
|
|
/* Priorities must be integral constants. */
|
|
|
|
/* Pointers, even with constant values, are not allowed. */
|
|
void c4()
|
|
__attribute__((constructor ((void*) 500))); /* { dg-error "priorities" } */
|
|
void d4()
|
|
__attribute__((destructor ((void*) 500))); /* { dg-error "priorities" } */
|
|
|
|
/* Integer variables are not allowed. */
|
|
int i;
|
|
void c5()
|
|
__attribute__((constructor ((i)))); /* { dg-error "priorities" } */
|
|
void d5()
|
|
__attribute__((destructor ((i)))); /* { dg-error "priorities" } */
|
|
|
|
/* Enumeration constants are allowed. */
|
|
enum E { e = 500 };
|
|
void c6()
|
|
__attribute__((constructor ((e))));
|
|
void d6()
|
|
__attribute__((destructor ((e))));
|