annotate gcc/testsuite/gcc.dg/dll-11.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-11a.c" } */
kono
parents:
diff changeset
4 /* { dg-options "-w -O2 -std=gnu89 -fkeep-inline-dllexport" } */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 /* Test that inline functions declared "dllexport" appear in object files,
kono
parents:
diff changeset
7 even if they are not called, when -fkeep-inline-dllexport is supplied.
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 This behavior is required by the ARM C++ ABI:
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 Exporting a function that can be inlined should force the
kono
parents:
diff changeset
12 creation and export of an out-of-line copy of it.
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 and should presumably also apply.
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 Visual Studio 2005 also honors that rule. */
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 __declspec(dllexport) inline void i1() {}
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 __declspec(dllexport) extern inline void e1() {}
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 /* It is invalid to declare the function inline after its definition. */
kono
parents:
diff changeset
23 #if 0
kono
parents:
diff changeset
24 __declspec(dllexport) void i2() {}
kono
parents:
diff changeset
25 inline void i2();
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 __declspec(dllexport) extern void e2() {}
kono
parents:
diff changeset
28 inline void e2();
kono
parents:
diff changeset
29 #endif
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 __declspec(dllexport) inline void i3() {}
kono
parents:
diff changeset
32 void i3();
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 __declspec(dllexport) inline void e3() {}
kono
parents:
diff changeset
35 extern void e3();
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 __declspec(dllexport) void i4();
kono
parents:
diff changeset
38 inline void i4() {};
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 __declspec(dllexport) extern void e4();
kono
parents:
diff changeset
41 inline void e4() {};
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 __declspec(dllexport) inline void i5();
kono
parents:
diff changeset
44 void i5() {};
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 __declspec(dllexport) inline void e5();
kono
parents:
diff changeset
47 extern void e5() {};
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 /* Make sure that just declaring the function -- without defining it
kono
parents:
diff changeset
50 -- does not cause errors. */
kono
parents:
diff changeset
51 __declspec(dllexport) inline void i6();
kono
parents:
diff changeset
52 __declspec(dllexport) extern inline void e6();