Skip to content

Commit e05dee1

Browse files
committed
Fix the test to work on objc-interop enabled and disabled platforms.
1 parent cbe4b0d commit e05dee1

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

test/SILOptimizer/eager_specialize.sil

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -652,17 +652,17 @@ bb0(%0 : $*T, %1 : $*S):
652652
// instead of value witness functions to load and store the value of a generic type.
653653
// CHECK-IRGEN-LABEL: define linkonce_odr hidden void @_T016eager_specialize18copyValueAndReturnxx_xz1stlFxxxRlze31_lItilr_Tp5(i32* noalias nocapture sret, i32* noalias nocapture dereferenceable(4), i32* nocapture dereferenceable(4), %swift.type* %"\CF\84_0_0")
654654
// CHECK-IRGEN: entry:
655-
// CHECK-IRGEN-NEXT: %3 = load i32, i32* %2, align 4
656-
// CHECK-IRGEN-NEXT: store i32 %3, i32* %0, align 4
655+
// CHECK-IRGEN-NEXT: %3 = load i32, i32* %2
656+
// CHECK-IRGEN-NEXT: store i32 %3, i32* %0
657657
// CHECK-IRGEN-NEXT: ret void
658658
// CHECK-IRGEN-NEXT:}
659659

660660
// Check that a specialization for _Trivial(64) uses direct loads and stores
661661
// instead of value witness functions to load and store the value of a generic type.
662662
// CHECK-IRGEN-LABEL: define linkonce_odr hidden void @_T016eager_specialize18copyValueAndReturnxx_xz1stlFxxxRlze63_lItilr_Tp5(i64* noalias nocapture sret, i64* noalias nocapture dereferenceable(8), i64* nocapture dereferenceable(8), %swift.type* %"\CF\84_0_0")
663663
// CHECK-IRGEN: entry:
664-
// CHECK-IRGEN-NEXT: %3 = load i64, i64* %2, align 8
665-
// CHECK-IRGEN-NEXT: store i64 %3, i64* %0, align 8
664+
// CHECK-IRGEN-NEXT: %3 = load i64, i64* %2
665+
// CHECK-IRGEN-NEXT: store i64 %3, i64* %0
666666
// CHECK-IRGEN-NEXT: ret void
667667
// CHECK-IRGEN-NEXT: }
668668

@@ -671,23 +671,22 @@ bb0(%0 : $*T, %1 : $*S):
671671
// CHECK-IRGEN-LABEL: define linkonce_odr hidden void @_T016eager_specialize19copyValueAndReturn2xx_xz1stlFxxxRlzTlItilr_Tp5(%swift.opaque* noalias nocapture sret, %swift.opaque* noalias nocapture, %swift.opaque* nocapture, %swift.type* %"\CF\84_0_0")
672672
// CHECK-IRGEN-NEXT: entry:
673673
// CHECK-IRGEN-NEXT: %3 = bitcast %swift.type* %"\CF\84_0_0" to i8***
674-
// CHECK-IRGEN-NEXT: %4 = getelementptr inbounds i8**, i8*** %3, i64 -1
675-
// CHECK-IRGEN-NEXT: %"\CF\84_0_0.valueWitnesses" = load i8**, i8*** %4, align 8, !invariant.load !11, !dereferenceable !12
676-
// CHECK-IRGEN-NEXT: %5 = getelementptr inbounds i8*, i8** %"\CF\84_0_0.valueWitnesses", i32 6
677-
// CHECK-IRGEN-NEXT: %6 = load i8*, i8** %5, align 8, !invariant.load !11
678-
// CHECK-IRGEN-NEXT: %initializeWithCopy = bitcast i8* %6 to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
679-
// CHECK-IRGEN-NEXT: %7 = call %swift.opaque* %initializeWithCopy(%swift.opaque* %0, %swift.opaque* %2, %swift.type* %"\CF\84_0_0") #3
674+
// CHECK-IRGEN-NEXT: %4 = getelementptr inbounds i8**, i8*** %3, i{{.*}} -1
675+
// CHECK-IRGEN-NEXT: %"\CF\84_0_0.valueWitnesses" = load i8**, i8*** %4
676+
// CHECK-IRGEN-NEXT: %5 = getelementptr inbounds i8*, i8** %"\CF\84_0_0.valueWitnesses"
677+
// CHECK-IRGEN-NEXT: %6 = load i8*, i8** %5
678+
// CHECK-IRGEN-NEXT: %initializeWithCopy = {{.*}}
679+
// CHECK-IRGEN-NEXT: %7 = call {{.*}} %initializeWithCopy
680680
// CHECK-IRGEN-NEXT: ret void
681681
// CHECK-IRGEN-NEXT: }
682682

683683
// Check that a specialization for _RefCountedObject just copies the fixed-size reference,
684684
// and call retain/release directly, instead of calling the value witness functions.
685-
// CHECK-IRGEN-LABEL: define linkonce_odr hidden void @_T016eager_specialize19copyValueAndReturn3xx_xz1stlFxxxRlzRlItilr_Tp5(%objc_object** noalias nocapture sret, %objc_object** noalias nocapture dereferenceable(8), %objc_object** nocapture dereferenceable(8), %swift.type* %"\CF\84_0_0")
685+
// The matching patterns in this test are rather non-precise to cover both objc and non-objc platforms.
686+
// CHECK-IRGEN-LABEL: define{{.*}}@_T016eager_specialize19copyValueAndReturn3xx_xz1stlFxxxRlzRlItilr_Tp5
686687
// CHECK-IRGEN: entry:
687-
// CHECK-IRGEN-NEXT: %3 = load %objc_object*, %objc_object** %2, align 8
688-
// CHECK-IRGEN-NEXT: call void @swift_unknownRetain(%objc_object* %3) #3
689-
// CHECK-IRGEN-NEXT: store %objc_object* %3, %objc_object** %0, align 8
690-
// CHECK-IRGEN-NEXT: %toDestroy = load %objc_object*, %objc_object** %1, align 8
691-
// CHECK-IRGEN-NEXT: call void @swift_unknownRelease(%objc_object* %toDestroy) #3
692-
// CHECK-IRGEN-NEXT: ret void
693-
// CHECK-IRGEN-NEXT: }
688+
// CHECK-IRGEN-NOT: ret void
689+
// CHECK-IRGEN: call {{.*}}etain
690+
// CHECK-IRGEN-NOT: ret void
691+
// CHECK-IRGEN: call {{.*}}elease
692+
// CHECK-IRGEN: ret void

0 commit comments

Comments
 (0)