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