1/* { dg-do compile } */ 2/* { dg-require-weak "" } */ 3/* { dg-options "-fno-common" } */ 4 5/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1a" } } */ 6/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1b" } } */ 7/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1c" } } */ 8/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1d" } } */ 9/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1e" } } */ 10/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1f" } } */ 11/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1g" } } */ 12/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1h" } } */ 13/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1i" } } */ 14/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1j" } } */ 15/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1k" } } */ 16 17/* test variable addresses with #pragma weak */ 18 19#pragma weak vfoo1a 20extern int vfoo1a; 21void * foo1a (void) 22{ 23 return (void *)&vfoo1a; 24} 25 26 27extern int vfoo1b; 28#pragma weak vfoo1b 29void * foo1b (void) 30{ 31 return (void *)&vfoo1b; 32} 33 34 35extern int vfoo1c; /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ 36void * foo1c (void) 37{ 38 return (void *)&vfoo1c; 39} 40#pragma weak vfoo1c 41 42 43#pragma weak vfoo1d 44int vfoo1d; 45void * foo1d (void) 46{ 47 return (void *)&vfoo1d; 48} 49 50 51int vfoo1e; 52#pragma weak vfoo1e 53void * foo1e (void) 54{ 55 return (void *)&vfoo1e; 56} 57 58 59int vfoo1f; 60void * foo1f (void) 61{ 62 return (void *)&vfoo1f; 63} 64#pragma weak vfoo1f 65 66 67extern int vfoo1g; /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ 68void * foo1g (void) 69{ 70 return (void *)&vfoo1g; 71} 72#pragma weak vfoo1g 73int vfoo1g; 74 75 76extern int vfoo1h; 77void * foo1h (void) 78{ 79 return (void *)&vfoo1h; 80} 81int vfoo1h; 82#pragma weak vfoo1h 83 84 85int vfoo1i; 86extern int vfoo1i; 87void * foo1i (void) 88{ 89 return (void *)&vfoo1i; 90} 91#pragma weak vfoo1i 92 93 94extern int vfoo1j; 95int vfoo1j; 96void * foo1j (void) 97{ 98 return (void *)&vfoo1j; 99} 100#pragma weak vfoo1j 101 102 103#pragma weak vfoo1k 104int vfoo1k = 1; 105 106