1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o %t 2*67e74705SXin Li 3*67e74705SXin Li // PR5248 4*67e74705SXin Li namespace PR5248 { 5*67e74705SXin Li struct A { 6*67e74705SXin Li void copyFrom(const A &src); 7*67e74705SXin Li void addRef(void); 8*67e74705SXin Li 9*67e74705SXin Li A& operator=(int); 10*67e74705SXin Li }; 11*67e74705SXin Li copyFrom(const A & src)12*67e74705SXin Livoid A::copyFrom(const A &src) { 13*67e74705SXin Li ((A &)src).addRef(); 14*67e74705SXin Li } 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li // reinterpret_cast to self test(PR5248::A * a)18*67e74705SXin Livoid test(PR5248::A* a) { 19*67e74705SXin Li reinterpret_cast<PR5248::A&>(*a) = 17; 20*67e74705SXin Li } 21