annotate gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.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 codegen for overloaded simple operator new/delete.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 here check that we prefer the overload that accounts the function
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 args. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 #define PROVIDE_NEW_SZT
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 #define PROVIDE_NEW_SZT_INT
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 #define PROVIDE_DEL_VP
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 #include "../coro1-allocators.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 int used_ovl_new = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 int used_ovl_del = 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 != 5)
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
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 if (used_ovl_del != 1)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 PRINT ("main: failed to call overloaded operator delete");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 abort ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 PRINT ("main: returning");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 return 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 }