1 /* { dg-do compile } */
2 /* { dg-require-weak "" } */
3 /* { dg-options "-fno-common" } */
4 /* { dg-skip-if "" { x86_64-*-mingw* } } */
5 /* NVPTX's weak is applied to the definition,  not declaration.  */
6 /* { dg-skip-if "" { nvptx-*-* } } */
7 
8 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?a" } } */
9 /* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?b" } } */
10 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?c" } } */
11 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?d" } } */
12 
13 #pragma weak a
14 extern char a[];
15 
user_a(void)16 char *user_a(void)
17 {
18   return a+1;
19 }
20 
21 int x;
b(int y)22 int extern inline b(int y)
23 {
24   return x+y;
25 }
26 
27 extern int b(int y);
28 
user_b(int z)29 int user_b(int z)
30 {
31   return b(z);
32 }
33 
34 #pragma weak c
35 extern int c;
36 
37 int *user_c = &c;
38 
39 #pragma weak d
40 extern char d[];
41 
42 char *user_d = &d[1];
43