2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr40834.C
blob67d3028532a035a5f011303c58f510e860963de3
1 /* { dg-do run } */
3 extern "C" void abort (void);
4 class XalanDOMString
6 public:
7   int y;
8 };
10 class XObject
12 public:
13   const XalanDOMString& str() const { return x; }
14   XalanDOMString x;
17 class XObjectPtr
19 public:
20   XObjectPtr(const XObjectPtr& theSource)
21     {
22       m_xobjectPtr = theSource.m_xobjectPtr;
23     }
24   const XObject* operator->() const
25     {
26       return m_xobjectPtr;
27     };
28   XObjectPtr(XObject *p) { m_xobjectPtr = p; }
29   XObject* m_xobjectPtr;
32 class FunctionSubstringBefore
34 public:
35   int execute( const XObjectPtr arg1) const
36     {
37       const XalanDOMString& theFirstString = arg1->str();
38       return theFirstString.y;
39     }
42 int
43 main ()
45   XObject x; 
46   XObjectPtr y (&x);
47   x.x.y = -1;
48   FunctionSubstringBefore z;
49   if (z.execute (y) != -1)
50     abort ();
51   return 0;