annotate gcc/testsuite/gcc.dg/dll-9.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do link } */
kono
parents:
diff changeset
2 /* { dg-require-dll "" } */
kono
parents:
diff changeset
3 /* { dg-additional-sources "dll-9a.c" } */
kono
parents:
diff changeset
4 /* { dg-options "-w -O2 -std=gnu89 -fno-keep-inline-dllexport" } */
kono
parents:
diff changeset
5 /* { dg-prune-output .*undefined.* } */
kono
parents:
diff changeset
6 /* { dg-xfail-if "link failure expected" { *-*-* } } */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 /* Test that inline functions declared "dllexport" appear in object files,
kono
parents:
diff changeset
9 even if they are not called - except when -fno-keep-inline-dllexport.
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 This behavior is required by the ARM C++ ABI:
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 Exporting a function that can be inlined should force the
kono
parents:
diff changeset
14 creation and export of an out-of-line copy of it.
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 and should presumably also apply.
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 Visual Studio 2005 also honors that rule. */
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 __declspec(dllexport) inline void i1() {}
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 __declspec(dllexport) extern inline void e1() {}
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 /* It is invalid to declare the function inline after its definition. */
kono
parents:
diff changeset
25 #if 0
kono
parents:
diff changeset
26 __declspec(dllexport) void i2() {}
kono
parents:
diff changeset
27 inline void i2();
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 __declspec(dllexport) extern void e2() {}
kono
parents:
diff changeset
30 inline void e2();
kono
parents:
diff changeset
31 #endif
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 __declspec(dllexport) inline void i3() {}
kono
parents:
diff changeset
34 void i3();
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 __declspec(dllexport) inline void e3() {}
kono
parents:
diff changeset
37 extern void e3();
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 __declspec(dllexport) void i4();
kono
parents:
diff changeset
40 inline void i4() {};
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 __declspec(dllexport) extern void e4();
kono
parents:
diff changeset
43 inline void e4() {};
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 __declspec(dllexport) inline void i5();
kono
parents:
diff changeset
46 void i5() {};
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 __declspec(dllexport) inline void e5();
kono
parents:
diff changeset
49 extern void e5() {};
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 /* Make sure that just declaring the function -- without defining it
kono
parents:
diff changeset
52 -- does not cause errors. */
kono
parents:
diff changeset
53 __declspec(dllexport) inline void i6();
kono
parents:
diff changeset
54 __declspec(dllexport) extern inline void e6();