================ @@ -194,9 +217,31 @@ I::~I() { call_in_dtor(); } // CHECK-MSABI32-LABEL: define {{.*}} @"??_GI@@UAEPAXI@Z"( // CHECK-MSABI-NOT: call{{ }} // CHECK-MSABI: load i32 -// CHECK-MSABI: icmp eq i32 {{.*}}, 0 -// CHECK-MSABI: br i1 +// CHECK-MSABI-NEXT: and i32 %[[IMP_PARAM:.*]], 4 +// CHECK-MSABI-NEXT: icmp eq i32 {{.*}}, 0 +// CHECK-MSABI-NEXT: br i1 %[[CHCK]], label %dtor.entry_cont, label %dtor.call_dtor +// +// CHECK-MSABI: dtor.call_dtor: +// CHECK-MSABI64-NEXT: call void @"??1I@@UEAA@XZ"({{.*}}) +// CHECK-MSABI32-NEXT: call x86_thiscallcc void @"??1I@@UAE@XZ"({{.*}}) +// CHECK-MSABI-NEXT: br label %dtor.entry_cont +// +// CHECK-MSABI: dtor.entry_cont: +// CHECK-MSABI-NEXT: and i32 %[[IMP_PARAM]], 1 +// CHECK-MSABI-NEXT: icmp eq i32 %{{.*}}, 0 +// CHECK-MSABI-NEXT: br i1 %{{.*}}, label %dtor.continue, label %dtor.call_delete +// +// CHECK-MSABI: dtor.call_delete: +// CHECK-MSABI-NEXT: %[[THIRDBIT1:.*]] = and i32 %[[IMP_PARAM]], 4 +// CHECK-MSABI-NEXT: %[[CHCK2:.*]] = icmp eq i32 %[[THIRDBIT1]], 0 +// CHECK-MSABI-NEXT: br i1 %[[CHCK2]], label %dtor.call_class_delete, label %dtor.call_glob_delete +// +// CHECK-MSABI-LABEL: dtor.call_glob_delete: +// CHECK-MSABI64: call void @"??3@YAXPEAX_KW4align_val_t@std@@@Z"(ptr noundef %{{.*}}, i64 noundef 96, i64 noundef 32) +// CHECK-MSABI32: call void @"??3@YAXPAXIW4align_val_t@std@@@Z"(ptr noundef %{{.*}}, i32 noundef 64, i32 noundef 32) +// CHECK-MSABI-NEXT: br label %[[RETURN:.*]] // +// CHECK_MSABI: dtor.call_class_delete: ---------------- tahonermann wrote:
I think the additions here look good, but we're missing a test for a call to `::delete` for a class that declares a destroying operator delete. Such a test is interesting for both the Itanium and MSVC ABIs for different reasons (the complete object destructor is called followed by global operator delete for Itanium; the deleting destructor is called and it calls the complete destructor and then the global operator delete for MSVC). https://github.com/llvm/llvm-project/pull/139566 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits