annotate gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 // { dg-do run }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 /* check that we use the deallocation function with two args when both
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 are available. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 #define PROVIDE_NEW_SZT
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 #define PROVIDE_DEL_VP
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 #define PROVIDE_DEL_VP_SZT
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 #include "../coro1-allocators.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 int used_ovl_new = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 int used_ovl_del = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 int used_ovl_del_2arg = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 struct coro1
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 f (int v) noexcept
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 PRINT ("coro1: about to return");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 co_return;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 int main ()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 // Nest a scope so that we can inspect the flags after the DTORs run.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 PRINT ("main: create coro1");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 struct coro1 x = f (5);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 if (used_ovl_new != 1)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 PRINT ("main: apparently used the wrong op new...");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 abort ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 PRINT ("main: got coro1 - resuming");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 if (x.handle.done())
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 abort();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 x.handle.resume();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 PRINT ("main: after resume");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 if (!x.handle.done())
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 PRINT ("main: apparently not done...");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 abort ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 if (used_ovl_del != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 PRINT ("main: wrong call to overloaded operator delete 1 arg");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 abort ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 if (used_ovl_del_2arg != 1)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 PRINT ("main: failed to call overloaded operator delete 2 args");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 abort ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 PRINT ("main: returning");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 return 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 }