1/* { dg-do compile } */ 2/* { dg-require-weak "" } */ 3/* { dg-options "-fno-common" } */ 4 5/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1a" } } */ 6/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1b" } } */ 7/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1c" } } */ 8/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?ffoo1d" } } */ 9/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1e" } } */ 10 11/* test function addresses with #pragma weak */ 12 13#pragma weak ffoo1a 14extern void * ffoo1a (void); 15void * foo1a (void) 16{ 17 return (void *)ffoo1a; 18} 19 20extern void * ffoo1b (void); 21#pragma weak ffoo1b 22void * foo1b (void) 23{ 24 return (void *)ffoo1b; 25} 26 27extern void * ffoo1c (void); /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ 28void * foo1c (void) 29{ 30 return (void *)ffoo1c; 31} 32#pragma weak ffoo1c 33 34 35int ffoo1d (void); 36#pragma weak ffoo1d 37 38 39extern void * ffoo1e (void); 40#pragma weak ffoo1e 41void * foo1e (void) 42{ 43 if (ffoo1e) 44 ffoo1e (); 45 return 0; 46} 47 48