Lines Matching defs:dtors
5 // RUN: FileCheck --check-prefix DTORS %s < %t
9 // RUN: %clang_cc1 -emit-llvm %s -o - -mconstructor-aliases -triple=x86_64-pc-win32 -fno-rtti | FileCheck --check-prefix DTORS-X64 %s
49 // DTORS: define linkonce_odr x86_thiscallcc void @"\01??_GC@basic@@UAEPAXI@Z"(%"struct.basic::C"* %this, i32 %should_call_delete)
50 // DTORS: store i32 %should_call_delete, i32* %[[SHOULD_DELETE_VAR:[0-9a-z._]+]], align 4
51 // DTORS: %[[SHOULD_DELETE_VALUE:[0-9a-z._]+]] = load i32* %[[SHOULD_DELETE_VAR]]
52 // DTORS: call x86_thiscallcc void @"\01??1C@basic@@UAE@XZ"(%"struct.basic::C"* %[[THIS:[0-9a-z]+]])
53 // DTORS-NEXT: %[[CONDITION:[0-9]+]] = icmp eq i32 %[[SHOULD_DELETE_VALUE]], 0
54 // DTORS-NEXT: br i1 %[[CONDITION]], label %[[CONTINUE_LABEL:[0-9a-z._]+]], label %[[CALL_DELETE_LABEL:[0-9a-z._]+]]
56 // DTORS: [[CALL_DELETE_LABEL]]
57 // DTORS-NEXT: %[[THIS_AS_VOID:[0-9a-z]+]] = bitcast %"struct.basic::C"* %[[THIS]] to i8*
58 // DTORS-NEXT: call void @"\01??3@YAXPAX@Z"(i8* %[[THIS_AS_VOID]])
59 // DTORS-NEXT: br label %[[CONTINUE_LABEL]]
61 // DTORS: [[CONTINUE_LABEL]]
62 // DTORS-NEXT: ret void
65 // DTORS-X64: @"\01??_GC@basic@@UEAAPEAXI@Z"
321 namespace dtors {
329 // CHECK: define void @"\01?call_nv_complete@dtors@@YAXPAUA@1@@Z"
330 // CHECK: call x86_thiscallcc void @"\01??1A@dtors@@QAE@XZ"
334 // CHECK: declare x86_thiscallcc void @"\01??1A@dtors@@QAE@XZ"
344 // CHECK: define void @"\01?call_vbase_complete@dtors@@YAXPAUD@1@@Z"
345 // CHECK: call x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"(%"struct.dtors::D"* %{{[^,]+}})
349 // The complete dtor should call the base dtors for D and the vbase A (once).
350 // CHECK: define linkonce_odr x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"
352 // CHECK: call x86_thiscallcc void @"\01??1D@dtors@@QAE@XZ"
354 // CHECK: call x86_thiscallcc void @"\01??1A@dtors@@QAE@XZ"
360 // CHECK: define void @"\01?destroy_d_complete@dtors@@YAXXZ"
361 // CHECK: call x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"(%"struct.dtors::D"* %{{[^,]+}})
366 // deleting dtor (_G). The only way to call deleting dtors currently is through
370 // CHECK: define void @"\01?call_nv_deleting_dtor@dtors@@YAXPAUD@1@@Z"
371 // CHECK: call x86_thiscallcc void @"\01??_DD@dtors@@QAE@XZ"(%"struct.dtors::D"* %{{[^,]+}})