Lines Matching full:dtors
5 // RUN: FileCheck --check-prefix DTORS %s < %t
10 // RUN: %clang_cc1 -emit-llvm %s -o - -mconstructor-aliases -triple=x86_64-pc-win32 -fno-rtti | FileCheck --check-prefix DTORS-X64 %s
50 // DTORS: define linkonce_odr x86_thiscallcc i8* @"\01??_GC@basic@@UAEPAXI@Z"(%"struct.basic::C"* %this, i32 %should_call_delete) {{.*}} comdat {{.*}} {
51 // DTORS: store i32 %should_call_delete, i32* %[[SHOULD_DELETE_VAR:[0-9a-z._]+]], align 4
52 // DTORS: store i8* %{{.*}}, i8** %[[RETVAL:[0-9a-z._]+]]
53 // DTORS: %[[SHOULD_DELETE_VALUE:[0-9a-z._]+]] = load i32, i32* %[[SHOULD_DELETE_VAR]]
54 // DTORS: call x86_thiscallcc void @"\01??1C@basic@@UAE@XZ"(%"struct.basic::C"* %[[THIS:[0-9a-z]+]])
55 // DTORS-NEXT: %[[CONDITION:[0-9]+]] = icmp eq i32 %[[SHOULD_DELETE_VALUE]], 0
56 // DTORS-NEXT: br i1 %[[CONDITION]], label %[[CONTINUE_LABEL:[0-9a-z._]+]], label %[[CALL_DELETE_LABEL:[0-9a-z._]+]]
58 // DTORS: [[CALL_DELETE_LABEL]]
59 // DTORS-NEXT: %[[THIS_AS_VOID:[0-9a-z]+]] = bitcast %"struct.basic::C"* %[[THIS]] to i8*
60 // DTORS-NEXT: call void @"\01??3@YAXPAX@Z"(i8* %[[THIS_AS_VOID]])
61 // DTORS-NEXT: br label %[[CONTINUE_LABEL]]
63 // DTORS: [[CONTINUE_LABEL]]
64 // DTORS-NEXT: %[[RET:.*]] = load i8*, i8** %[[RETVAL]]
65 // DTORS-NEXT: ret i8* %[[RET]]
68 // DTORS-X64: @"\01??_GC@basic@@UEAAPEAXI@Z"
340 namespace dtors {
348 // CHECK: define void @"\01?call_nv_complete@dtors@@YAXPAUA@1@@Z"
349 // CHECK: call x86_thiscallcc void @"\01??1A@dtors@@QAE@XZ"
353 // CHECK: declare x86_thiscallcc void @"\01??1A@dtors@@QAE@XZ"
363 // CHECK: define void @"\01?call_vbase_complete@dtors@@YAXPAUD@1@@Z"
364 // CHECK: call x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"(%"struct.dtors::D"* %{{[^,]+}})
368 // The complete dtor should call the base dtors for D and the vbase A (once).
369 // CHECK: define linkonce_odr x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"({{.*}}) {{.*}} comdat
371 // CHECK: call x86_thiscallcc void @"\01??1D@dtors@@QAE@XZ"
373 // CHECK: call x86_thiscallcc void @"\01??1A@dtors@@QAE@XZ"
379 // CHECK: define void @"\01?destroy_d_complete@dtors@@YAXXZ"
380 // CHECK: call x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"(%"struct.dtors::D"* %{{[^,]+}})
385 // deleting dtor (_G). The only way to call deleting dtors currently is through
389 dtors@@YAXPAUD@1@@Z"
390 // CHECK: call x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"(%"struct.dtors::D"* %{{[^,]+}})
462 // dtors.