2014-10-19 07:47:59 +08:00
|
|
|
// 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
|
2011-02-10 08:41:14 +08:00
|
|
|
// RUN: %test_debuginfo %s %t.out
|
|
|
|
// Radar 8775834
|
2013-06-20 06:07:11 +08:00
|
|
|
// DEBUGGER: break 62
|
2011-02-10 08:41:14 +08:00
|
|
|
// DEBUGGER: r
|
|
|
|
// DEBUGGER: p a
|
2014-02-27 08:02:40 +08:00
|
|
|
// CHECK: ${{[0-9]+}} =
|
2013-09-07 02:10:44 +08:00
|
|
|
// LLDB does not print artificial members.
|
2013-09-19 07:01:54 +08:00
|
|
|
// CHECK: {{(_vptr\$A =)?.*}}m_int = 12
|
2011-02-10 08:41:14 +08:00
|
|
|
|
|
|
|
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;
|
2011-04-28 08:02:06 +08:00
|
|
|
return *this;
|
2011-02-10 08:41:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|