annotate gcc/testsuite/g++.dg/other/ptrmem1.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 run }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 // Copyright (C) 2001 Free Software Foundation, Inc.
kono
parents:
diff changeset
4 // Contributed by Nathan Sidwell 31 Dec 2001 <nathan@codesourcery.com>
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 // PR 4379. We created pointers to member references and pointers to
kono
parents:
diff changeset
7 // member fields when we shouldn't have.
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 int gs;
kono
parents:
diff changeset
10 int gm;
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 struct D {
kono
parents:
diff changeset
13 D () :m (gm) {}
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 int &m;
kono
parents:
diff changeset
16 static int &s;
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 int Foo ();
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 int &D::s = gs;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 template<class T> int f1(T x)
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 return x != &gm;
kono
parents:
diff changeset
26 }
kono
parents:
diff changeset
27 template<class T> int f2(T x)
kono
parents:
diff changeset
28 {
kono
parents:
diff changeset
29 return x != &gs;
kono
parents:
diff changeset
30 }
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 int D::Foo ()
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 int r;
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 if (f1( &(D::m)))
kono
parents:
diff changeset
37 return 3;
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 if (f2( &D::s))
kono
parents:
diff changeset
40 return 1;
kono
parents:
diff changeset
41 if (f2( &(D::s)))
kono
parents:
diff changeset
42 return 2;
kono
parents:
diff changeset
43 return 0;
kono
parents:
diff changeset
44 }
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 int Foo ()
kono
parents:
diff changeset
47 {
kono
parents:
diff changeset
48 if (f2( &D::s))
kono
parents:
diff changeset
49 return 4;
kono
parents:
diff changeset
50 if (f2( &(D::s)))
kono
parents:
diff changeset
51 return 5;
kono
parents:
diff changeset
52 return 0;
kono
parents:
diff changeset
53 }
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 int main ()
kono
parents:
diff changeset
56 {
kono
parents:
diff changeset
57 D d;
kono
parents:
diff changeset
58 int r = d.Foo ();
kono
parents:
diff changeset
59 if (r)
kono
parents:
diff changeset
60 return r;
kono
parents:
diff changeset
61 r = Foo ();
kono
parents:
diff changeset
62 if (r)
kono
parents:
diff changeset
63 return r;
kono
parents:
diff changeset
64 return 0;
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 }