Files
llvm-project/debuginfo-tests/sret.cpp
T

72 lines
986 B
C++
Raw Normal View History

// 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
2017-11-21 01:20:28 +00:00
// RUN: %test_debuginfo %s %t.out
2011-02-10 00:41:14 +00:00
// Radar 8775834
// DEBUGGER: break 62
2011-02-10 00:41:14 +00:00
// DEBUGGER: r
// DEBUGGER: p a
// CHECK: ${{[0-9]+}} =
// LLDB does not print artificial members.
// CHECK: {{(_vptr\$A =)?.*}}m_int = 12
2011-02-10 00:41:14 +00: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;
};
2017-11-21 01:20:28 +00:00
A::A (int i) :
2011-02-10 00:41:14 +00:00
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 00:02:06 +00:00
return *this;
2011-02-10 00:41:14 +00:00
}
int A::get_int()
{
return m_int;
}
class B
{
public:
B () {}
2017-11-21 01:20:28 +00:00
2011-02-10 00:41:14 +00:00
A AInstance();
};
2017-11-21 01:20:28 +00:00
A
2011-02-10 00:41:14 +00:00
B::AInstance()
{
A a(12);
return a;
}
int main (int argc, char const *argv[])
{
B b;
int return_val = b.AInstance().get_int();
2017-11-21 01:20:28 +00:00
2011-02-10 00:41:14 +00:00
A a(b.AInstance());
return return_val;
}