blob: 3c304e2f04a5db1cca91613ff3ba7476142e7acc [file] [log] [blame]
Filipe Cabecinhas090a2372014-10-18 23:47:59 +00001// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
2// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
Zachary Turner79708b52017-11-21 01:20:28 +00003// RUN: %test_debuginfo %s %t.out
Devang Pateld9bc8e02011-02-10 00:41:14 +00004// Radar 8775834
David Blaikie86feadc2013-06-19 22:07:11 +00005// DEBUGGER: break 62
Devang Pateld9bc8e02011-02-10 00:41:14 +00006// DEBUGGER: r
7// DEBUGGER: p a
Adrian Prantl11f0d2c2014-02-27 00:02:40 +00008// CHECK: ${{[0-9]+}} =
Adrian Prantl888e023e2013-09-06 18:10:44 +00009// LLDB does not print artificial members.
Adrian Prantld913c862013-09-18 23:01:54 +000010// CHECK: {{(_vptr\$A =)?.*}}m_int = 12
Devang Pateld9bc8e02011-02-10 00:41:14 +000011
12class A
13{
14public:
15 A (int i=0);
16 A (const A& rhs);
17 const A&
18 operator= (const A& rhs);
19 virtual ~A() {}
20
21 int get_int();
22
23protected:
24 int m_int;
25};
26
Zachary Turner79708b52017-11-21 01:20:28 +000027A::A (int i) :
Devang Pateld9bc8e02011-02-10 00:41:14 +000028 m_int(i)
29{
30}
31
32A::A (const A& rhs) :
33 m_int (rhs.m_int)
34{
35}
36
37const A &
38A::operator =(const A& rhs)
39{
40 m_int = rhs.m_int;
Devang Patel443e46f12011-04-28 00:02:06 +000041 return *this;
Devang Pateld9bc8e02011-02-10 00:41:14 +000042}
43
44int A::get_int()
45{
46 return m_int;
47}
48
49class B
50{
51public:
52 B () {}
Zachary Turner79708b52017-11-21 01:20:28 +000053
Devang Pateld9bc8e02011-02-10 00:41:14 +000054 A AInstance();
55};
56
Zachary Turner79708b52017-11-21 01:20:28 +000057A
Devang Pateld9bc8e02011-02-10 00:41:14 +000058B::AInstance()
59{
60 A a(12);
61 return a;
62}
63
64int main (int argc, char const *argv[])
65{
66 B b;
67 int return_val = b.AInstance().get_int();
Zachary Turner79708b52017-11-21 01:20:28 +000068
Devang Pateld9bc8e02011-02-10 00:41:14 +000069 A a(b.AInstance());
70 return return_val;
71}