From d04c736c753624b1b7249f808da6f64431d981a2 Mon Sep 17 00:00:00 2001 From: Arnold Schwaighofer Date: Thu, 5 Sep 2024 09:27:20 -0700 Subject: [PATCH 1/2] [rebranch] Fix test/IRGen/async/class_resilience.swift on Windows Less/no constant folding is happening. --- test/IRGen/async/class_resilience.swift | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/IRGen/async/class_resilience.swift b/test/IRGen/async/class_resilience.swift index 77857cbf8e7ad..b4d0f46674fe0 100644 --- a/test/IRGen/async/class_resilience.swift +++ b/test/IRGen/async/class_resilience.swift @@ -43,10 +43,13 @@ open class MyBaseClass { // CHECK-LABEL: define {{(dllexport )?}}{{(protected )?}}swift{{(tail)?}}cc void @"$s16class_resilience14callsAwaitableyx010resilient_A09BaseClassCyxGYalF"(ptr noalias %0, ptr swiftasync %1{{.*}}) // CHECK-DIRECT: ptr @"$s15resilient_class9BaseClassC4waitxyYaFTjTu" -// CHECK-INDIRECT: [[LOAD:%[0-9]+]] = load ptr, ptr inttoptr (i64 and (i64 add (i64 ptrtoint (ptr @"\01__imp_$s15resilient_class9BaseClassC4waitxyYaFTjTu" to i64), i64 1), i64 -2) to ptr), align {{4|8}} -// CHECK-INDIRECT-NEXT: select i1 icmp eq (i64 and (i64 add (i64 ptrtoint (ptr @"\01__imp_$s15resilient_class9BaseClassC4waitxyYaFTjTu" to i64), i64 1), i64 1), i64 0), -// CHECK-INDIRECT-SAME: ptr inttoptr (i64 add (i64 ptrtoint (ptr @"\01__imp_$s15resilient_class9BaseClassC4waitxyYaFTjTu" to i64), i64 1) to ptr), -// CHECK-INDIRECT-SAME: ptr [[LOAD]] + +// CHECK-INDIRECT:[[T0:%.*]] = and i64 add (i64 ptrtoint (ptr @"\01__imp_$s15resilient_class9BaseClassC4waitxyYaFTjTu" to i64), i64 1), 1 +// CHECK-INDIRECT:[[T1:%.*]] = icmp eq i64 [[T0]], 0 +// CHECK-INDIRECT:[[T2:%.*]] = and i64 add (i64 ptrtoint (ptr @"\01__imp_$s15resilient_class9BaseClassC4waitxyYaFTjTu" to i64), i64 1), -2 +// CHECK-INDIRECT:[[T3:%.*]] = inttoptr i64 [[T2]] to ptr +// CHECK-INDIRECT:[[T4:%.*]] = load ptr, ptr [[T3]] +// CHECK-INDIRECT:[[T5:%.*]] = select i1 [[T1]], ptr inttoptr (i64 add (i64 ptrtoint (ptr @"\01__imp_$s15resilient_class9BaseClassC4waitxyYaFTjTu" to i64), i64 1) to ptr), ptr [[T4]] // CHECK: ret void public func callsAwaitable(_ c: BaseClass) async -> T { return await c.wait() From 0acfda8f6c8eaa47b63ac822ca3657e9e6ab7294 Mon Sep 17 00:00:00 2001 From: Arnold Schwaighofer Date: Fri, 6 Sep 2024 12:06:01 -0700 Subject: [PATCH 2/2] [rebranch] Fix test/IRGen/async/protocol_resilience.swift --- test/IRGen/async/protocol_resilience.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/IRGen/async/protocol_resilience.swift b/test/IRGen/async/protocol_resilience.swift index c91a7d61297cb..e9aeee6cfaa94 100644 --- a/test/IRGen/async/protocol_resilience.swift +++ b/test/IRGen/async/protocol_resilience.swift @@ -28,10 +28,12 @@ public protocol MyAwaitable { // CHECK-LABEL: define {{(dllexport )?}}{{(protected )?}}swift{{(tail)?}}cc void @"$s19protocol_resilience14callsAwaitabley6ResultQzxYa010resilient_A00D0RzlF"(ptr noalias %0, ptr swiftasync %1, ptr noalias %2, ptr %T, ptr %T.Awaitable) // CHECK-DIRECT: ptr @"$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" -// CHECK-INDIRECT: [[LOAD:%[0-9]+]] = load ptr, ptr inttoptr (i64 and (i64 add (i64 ptrtoint (ptr @"\01__imp_$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" to i64), i64 1), i64 -2) to ptr), align {{4|8}} -// CHECK-INDIRECT: select i1 icmp eq (i64 and (i64 add (i64 ptrtoint (ptr @"\01__imp_$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" to i64), i64 1), i64 1), i64 0), -// CHECK-INDIRECT-SAME: ptr inttoptr (i64 add (i64 ptrtoint (ptr @"\01__imp_$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" to i64), i64 1) to ptr), -// CHECK-INDIRECT-SAME: ptr [[LOAD]] +// CHECK-INDIRECT: [[TMP4:%.*]] = and i64 add (i64 ptrtoint (ptr @"\01__imp_$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" to i64), i64 1), 1 +// CHECK-INDIRECT: [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 0 +// CHECK-INDIRECT: [[TMP6:%.*]] = and i64 add (i64 ptrtoint (ptr @"\01__imp_$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" to i64), i64 1), -2 +// CHECK-INDIRECT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr +// CHECK-INDIRECT: [[TMP8:%.*]] = load ptr, ptr [[TMP7]], align 8 +// CHECK-INDIRECT: select i1 [[TMP5]], ptr inttoptr (i64 add (i64 ptrtoint (ptr @"\01__imp_$s18resilient_protocol9AwaitableP4wait6ResultQzyYaFTjTu" to i64), i64 1) to ptr), ptr [[TMP8]] // CHECK: ret void public func callsAwaitable(_ t: T) async -> T.Result { return await t.wait()