diff options
Diffstat (limited to 'debuginfo-tests/sret.cpp')
-rw-r--r-- | debuginfo-tests/sret.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/debuginfo-tests/sret.cpp b/debuginfo-tests/sret.cpp new file mode 100644 index 00000000000..7fd23852712 --- /dev/null +++ b/debuginfo-tests/sret.cpp @@ -0,0 +1,70 @@ +// RUN: %clangxx -O0 -g %s -c -o %t.o +// RUN: %clangxx %t.o -o %t.out +// RUN: %test_debuginfo %s %t.out +// Radar 8775834 +// DEBUGGER: break 60 +// DEBUGGER: r +// DEBUGGER: p a +// CHECK: $1 = (A &) +// CHECK: _vptr$A = +// CHECK: 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; +} + +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; +} |