copy-constructor-synthesis.cpp revision 942f4f33d02dba823594bd2d7b3d317cb01c74f8
1942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// RUNX: clang-cc -triple x86_64-apple-darwin -S %s -o %t-64.s && 2942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// RUNX: FileCheck -check-prefix LP64 --input-file=%t-64.s %s && 3942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// RUN: clang-cc -triple i386-apple-darwin -S %s -o %t-32.s && 4942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s && 5942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// RUN: true 6942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 7942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianextern "C" int printf(...); 8942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 9942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianint init = 100; 10942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 11942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianstruct M { 12942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian int iM; 13942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian M() : iM(init++) {} 14942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian}; 15942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 16942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianstruct N { 17942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian int iN; 18942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian N() : iN(200) {} 19942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian N(N const & arg){this->iN = arg.iN; } 20942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian}; 21942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 22942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianstruct P { 23942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian int iP; 24942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian P() : iP(init++) {} 25942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian}; 26942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 27942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 28942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianstruct X : M, N, P { // ... 29942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian X(){} 30942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian P p0; 31942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian void pr() { printf("iM = %d iN = %d, m1.iM = %d\n", iM, iN, m1.iM); 32942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian printf("im = %d p0.iP = %d, p1.iP = %d\n", iP, p0.iP, p1.iP); } 33942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian M m1; 34942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian P p1; 35942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian}; 36942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 37942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanianint main() 38942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian{ 39942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian X a; 40942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian X b(a); 41942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian b.pr(); 42942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian X x; 43942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian X c(x); 44942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian c.pr(); 45942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian} 46942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian#if 0 47942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// -m64 does not work due to unrelated llvm bug! 48942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// CHECK-LP64: .globl __ZN1XC1ERK1X 49942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// CHECK-LP64: .weak_definition __ZN1XC1ERK1X 50942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// CHECK-LP64: __ZN1XC1ERK1X: 51942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian#endif 52942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian 53942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// CHECK-LP32: .globl __ZN1XC1ERK1X 54942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// CHECK-LP32: .weak_definition __ZN1XC1ERK1X 55942f4f33d02dba823594bd2d7b3d317cb01c74f8Fariborz Jahanian// CHECK-LP32: __ZN1XC1ERK1X: 56