1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -triple i686-pc-mingw32 -fms-extensions -Wmicrosoft %s -emit-llvm -o - | FileCheck %s 28e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 38e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarclass Test1 { 48e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarpublic: 58e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar int a; 68e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar}; 78e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 88e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarvoid f1() { 98e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test1 var; 108e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar var.Test1::Test1(); 118e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 128e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* %{{.*}}, i32 4, i32 4, i1 false) 138e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar var.Test1::Test1(var); 148e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar} 158e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 168e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarclass Test2 { 178e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarpublic: 188e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test2() { a = 10; b = 10; } 198e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar int a; 208e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar int b; 218e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar}; 228e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 238e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarvoid f2() { 248e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar // CHECK: %var = alloca %class.Test2, align 4 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-NEXT: call x86_thiscallcc void @_ZN5Test2C1Ev(%class.Test2* %var) 268e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test2 var; 278e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-NEXT: call x86_thiscallcc void @_ZN5Test2C1Ev(%class.Test2* %var) 298e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar var.Test2::Test2(); 308e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 318e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* %{{.*}}, i32 8, i32 4, i1 false) 328e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar var.Test2::Test2(var); 338e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar} 348e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 358e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 368e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 378e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 388e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarclass Test3 { 398e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarpublic: 408e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test3() { a = 10; b = 15; c = 20; } 418e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test3(const Test3& that) { a = that.a; b = that.b; c = that.c; } 428e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar int a; 438e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar int b; 448e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar int c; 458e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar}; 468e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 478e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbarvoid f3() { 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: call x86_thiscallcc void @_ZN5Test3C1Ev(%class.Test3* %var) 498e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test3 var; 508e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-NEXT: call x86_thiscallcc void @_ZN5Test3C1Ev(%class.Test3* %var2) 528e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar Test3 var2; 538e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-NEXT: call x86_thiscallcc void @_ZN5Test3C1Ev(%class.Test3* %var) 558e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar var.Test3::Test3(); 568e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar 57176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines // CHECK-NEXT: call x86_thiscallcc void @_ZN5Test3C1ERKS_(%class.Test3* %var, %class.Test3* dereferenceable({{[0-9]+}}) %var2) 588e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar var.Test3::Test3(var2); 598e26222104a3fbdbed5322dc60800e32620a2a90Daniel Dunbar} 60