/* { 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))));
