| // 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; |
| } |