72 lines
		
	
	
		
			986 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			986 B
		
	
	
	
		
			C++
		
	
	
	
// 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;
 | 
						|
}
 |