Fix type in the changelog entry,
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / polymorphic-call-1.C
blob2b5b5447834986e0b9fb9cf19d3d8a6c7f912ee3
1 // { dg-do compile }
2 // { dg-options "-O2" }
3 class A;
4 class B
6   A *mRawPtr;
8 public:
9   void *StartAssignment___trans_tmp_2;
10   A **
11   m_fn1 ()
12   {
13     StartAssignment___trans_tmp_2 = &mRawPtr;
14     return reinterpret_cast<A **> (StartAssignment___trans_tmp_2);
15   }
17 class C
19 public:
20   C (B &p1) : mTargetSmartPtr (p1) {}
21   operator A **() { return mTargetSmartPtr.m_fn1 (); }
22   B &mTargetSmartPtr;
24 class A
26 public:
27   A ();
29 class D
31   D (bool);
32   B mNewEntry;
33   virtual int m_fn2 ();
36 fn1 (B &p1)
38   return p1;
40 void
41 fn2 (bool, A **)
43   new A;
45 D::D (bool p1)
47   A **a = fn1 (mNewEntry);
48   fn2 (p1, a);