|  | // RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o | 
|  | // RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out | 
|  | // RUN: %test_debuginfo %s %t.out | 
|  | // Radar 8775834 | 
|  | // DEBUGGER: break 62 | 
|  | // DEBUGGER: r | 
|  | // DEBUGGER: p a | 
|  | // CHECK: ${{[0-9]+}} = | 
|  | // LLDB does not print artificial members. | 
|  | // CHECK:  {{(_vptr\$A =)?.*}}m_int = 12 | 
|  |  | 
|  | class A | 
|  | { | 
|  | public: | 
|  | A (int i=0); | 
|  | A (const A& rhs); | 
|  | const A& | 
|  | operator= (const A& rhs); | 
|  | virtual ~A() {} | 
|  |  | 
|  | int get_int(); | 
|  |  | 
|  | protected: | 
|  | int m_int; | 
|  | }; | 
|  |  | 
|  | A::A (int i) : | 
|  | m_int(i) | 
|  | { | 
|  | } | 
|  |  | 
|  | A::A (const A& rhs) : | 
|  | m_int (rhs.m_int) | 
|  | { | 
|  | } | 
|  |  | 
|  | const A & | 
|  | A::operator =(const A& rhs) | 
|  | { | 
|  | m_int = rhs.m_int; | 
|  | return *this; | 
|  | } | 
|  |  | 
|  | int A::get_int() | 
|  | { | 
|  | return m_int; | 
|  | } | 
|  |  | 
|  | class B | 
|  | { | 
|  | public: | 
|  | B () {} | 
|  |  | 
|  | A AInstance(); | 
|  | }; | 
|  |  | 
|  | A | 
|  | B::AInstance() | 
|  | { | 
|  | A a(12); | 
|  | return a; | 
|  | } | 
|  |  | 
|  | int main (int argc, char const *argv[]) | 
|  | { | 
|  | B b; | 
|  | int return_val = b.AInstance().get_int(); | 
|  |  | 
|  | A a(b.AInstance()); | 
|  | return return_val; | 
|  | } |