61 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=objc-arc -S < %s | FileCheck %s3 4declare ptr @llvm.objc.initWeak(ptr, ptr)5declare ptr @llvm.objc.storeWeak(ptr, ptr)6declare ptr @llvm.objc.loadWeak(ptr)7declare void @llvm.objc.destroyWeak(ptr)8declare ptr @llvm.objc.loadWeakRetained(ptr)9declare void @llvm.objc.moveWeak(ptr, ptr)10declare void @llvm.objc.copyWeak(ptr, ptr)11 12; If the pointer-to-weak-pointer is null, it's undefined behavior.13 14define void @test0(ptr %p, ptr %q) {15; CHECK-LABEL: @test0(16; CHECK-NEXT: entry:17; CHECK-NEXT: store i1 true, ptr poison, align 118; CHECK-NEXT: store i1 true, ptr poison, align 119; CHECK-NEXT: store i1 true, ptr poison, align 120; CHECK-NEXT: store i1 true, ptr poison, align 121; CHECK-NEXT: store i1 true, ptr poison, align 122; CHECK-NEXT: store i1 true, ptr poison, align 123; CHECK-NEXT: store i1 true, ptr poison, align 124; CHECK-NEXT: store i1 true, ptr poison, align 125; CHECK-NEXT: store i1 true, ptr poison, align 126; CHECK-NEXT: store i1 true, ptr poison, align 127; CHECK-NEXT: store i1 true, ptr poison, align 128; CHECK-NEXT: store i1 true, ptr poison, align 129; CHECK-NEXT: store i1 true, ptr poison, align 130; CHECK-NEXT: store i1 true, ptr poison, align 131; CHECK-NEXT: store i1 true, ptr poison, align 132; CHECK-NEXT: store i1 true, ptr poison, align 133; CHECK-NEXT: store i1 true, ptr poison, align 134; CHECK-NEXT: store i1 true, ptr poison, align 135; CHECK-NEXT: ret void36;37entry:38 call ptr @llvm.objc.storeWeak(ptr null, ptr %p)39 call ptr @llvm.objc.storeWeak(ptr undef, ptr %p)40 call ptr @llvm.objc.loadWeakRetained(ptr null)41 call ptr @llvm.objc.loadWeakRetained(ptr undef)42 call ptr @llvm.objc.loadWeak(ptr null)43 call ptr @llvm.objc.loadWeak(ptr undef)44 call ptr @llvm.objc.initWeak(ptr null, ptr %p)45 call ptr @llvm.objc.initWeak(ptr undef, ptr %p)46 call void @llvm.objc.destroyWeak(ptr null)47 call void @llvm.objc.destroyWeak(ptr undef)48 49 call void @llvm.objc.copyWeak(ptr null, ptr %q)50 call void @llvm.objc.copyWeak(ptr undef, ptr %q)51 call void @llvm.objc.copyWeak(ptr %q, ptr null)52 call void @llvm.objc.copyWeak(ptr %q, ptr undef)53 54 call void @llvm.objc.moveWeak(ptr null, ptr %q)55 call void @llvm.objc.moveWeak(ptr undef, ptr %q)56 call void @llvm.objc.moveWeak(ptr %q, ptr null)57 call void @llvm.objc.moveWeak(ptr %q, ptr undef)58 59 ret void60}61