annotate gcc/testsuite/g++.dg/opt/inline15.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 // PR tree-optimization/40813
kono
parents:
diff changeset
2 // { dg-do compile }
kono
parents:
diff changeset
3 // { dg-options "-O -fcheck-new" }
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 typedef __SIZE_TYPE__ size_t;
kono
parents:
diff changeset
6 typedef void *P;
kono
parents:
diff changeset
7 struct A;
kono
parents:
diff changeset
8 struct B
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 void *b[5];
kono
parents:
diff changeset
11 A *foo () { return (A *) & b[0]; }
kono
parents:
diff changeset
12 };
kono
parents:
diff changeset
13 struct A
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 void *operator new (size_t x, B &y) { return y.foo (); }
kono
parents:
diff changeset
16 };
kono
parents:
diff changeset
17 struct C : public A
kono
parents:
diff changeset
18 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
19 virtual int bar () { return 0; }
111
kono
parents:
diff changeset
20 };
kono
parents:
diff changeset
21 struct D : public C
kono
parents:
diff changeset
22 {
kono
parents:
diff changeset
23 static B baz (unsigned *x) { B b; new (b) D (x); return b; }
kono
parents:
diff changeset
24 D (unsigned *x) { }
kono
parents:
diff changeset
25 };
kono
parents:
diff changeset
26 struct E
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 B e;
kono
parents:
diff changeset
29 B fn (unsigned *a) { return D::baz (a); }
kono
parents:
diff changeset
30 E (P b, unsigned *a) : e (fn (a)) { }
kono
parents:
diff changeset
31 };
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 static unsigned *
kono
parents:
diff changeset
34 fn2 ()
kono
parents:
diff changeset
35 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
36 return 0;
111
kono
parents:
diff changeset
37 }
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 void
kono
parents:
diff changeset
40 test (P x)
kono
parents:
diff changeset
41 {
kono
parents:
diff changeset
42 E (x, fn2 ());
kono
parents:
diff changeset
43 }