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