11364750dSJames Henderson // RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o 21364750dSJames Henderson // RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out 31364750dSJames Henderson // RUN: %test_debuginfo %s %t.out 4*5257efdcSOCHyams // XFAIL: !system-darwin && gdb-clang-incompatibility 51364750dSJames Henderson // Radar 8775834 6*5257efdcSOCHyams // DEBUGGER: break 63 71364750dSJames Henderson // DEBUGGER: r 81364750dSJames Henderson // DEBUGGER: p a 91364750dSJames Henderson // CHECK: ${{[0-9]+}} = 101364750dSJames Henderson // LLDB does not print artificial members. 111364750dSJames Henderson // CHECK: {{(_vptr\$A =)?.*}}m_int = 12 121364750dSJames Henderson 131364750dSJames Henderson class A 141364750dSJames Henderson { 151364750dSJames Henderson public: 161364750dSJames Henderson A (int i=0); 171364750dSJames Henderson A (const A& rhs); 181364750dSJames Henderson const A& 191364750dSJames Henderson operator= (const A& rhs); ~A()201364750dSJames Henderson virtual ~A() {} 211364750dSJames Henderson 221364750dSJames Henderson int get_int(); 231364750dSJames Henderson 241364750dSJames Henderson protected: 251364750dSJames Henderson int m_int; 261364750dSJames Henderson }; 271364750dSJames Henderson A(int i)281364750dSJames HendersonA::A (int i) : 291364750dSJames Henderson m_int(i) 301364750dSJames Henderson { 311364750dSJames Henderson } 321364750dSJames Henderson A(const A & rhs)331364750dSJames HendersonA::A (const A& rhs) : 341364750dSJames Henderson m_int (rhs.m_int) 351364750dSJames Henderson { 361364750dSJames Henderson } 371364750dSJames Henderson 381364750dSJames Henderson const A & operator =(const A & rhs)391364750dSJames HendersonA::operator =(const A& rhs) 401364750dSJames Henderson { 411364750dSJames Henderson m_int = rhs.m_int; 421364750dSJames Henderson return *this; 431364750dSJames Henderson } 441364750dSJames Henderson get_int()451364750dSJames Hendersonint A::get_int() 461364750dSJames Henderson { 471364750dSJames Henderson return m_int; 481364750dSJames Henderson } 491364750dSJames Henderson 501364750dSJames Henderson class B 511364750dSJames Henderson { 521364750dSJames Henderson public: B()531364750dSJames Henderson B () {} 541364750dSJames Henderson 551364750dSJames Henderson A AInstance(); 561364750dSJames Henderson }; 571364750dSJames Henderson 581364750dSJames Henderson A AInstance()591364750dSJames HendersonB::AInstance() 601364750dSJames Henderson { 611364750dSJames Henderson A a(12); 621364750dSJames Henderson return a; 631364750dSJames Henderson } 641364750dSJames Henderson main(int argc,char const * argv[])651364750dSJames Hendersonint main (int argc, char const *argv[]) 661364750dSJames Henderson { 671364750dSJames Henderson B b; 681364750dSJames Henderson int return_val = b.AInstance().get_int(); 691364750dSJames Henderson 701364750dSJames Henderson A a(b.AInstance()); 711364750dSJames Henderson return return_val; 721364750dSJames Henderson } 73