Mercurial > hg > CbC > CbC_llvm
view llvm/test/Transforms/ObjCARC/weak-dce.ll @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 79ff65ed7e25 |
children | 1f2b6ac9f198 |
line wrap: on
line source
; RUN: opt -S -passes=objc-arc < %s | FileCheck %s ; rdar://11434915 ; Delete the weak calls and replace them with just the net retain. ; CHECK: define void @test0(i8* %p) { ; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p) ; CHECK-NEXT: ret void define void @test0(i8* %p) { %weakBlock = alloca i8*, align 8 %tmp7 = call i8* @llvm.objc.initWeak(i8** %weakBlock, i8* %p) nounwind %tmp26 = call i8* @llvm.objc.loadWeakRetained(i8** %weakBlock) nounwind call void @llvm.objc.destroyWeak(i8** %weakBlock) nounwind ret void } ; CHECK: define i8* @test1(i8* %p) { ; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p) ; CHECK-NEXT: ret i8* %p define i8* @test1(i8* %p) { %weakBlock = alloca i8*, align 8 %tmp7 = call i8* @llvm.objc.initWeak(i8** %weakBlock, i8* %p) nounwind %tmp26 = call i8* @llvm.objc.loadWeakRetained(i8** %weakBlock) nounwind call void @llvm.objc.destroyWeak(i8** %weakBlock) nounwind ret i8* %tmp26 } ; CHECK: define i8* @test2(i8* %p, i8* %q) { ; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %q) ; CHECK-NEXT: ret i8* %q define i8* @test2(i8* %p, i8* %q) { %weakBlock = alloca i8*, align 8 %tmp7 = call i8* @llvm.objc.initWeak(i8** %weakBlock, i8* %p) nounwind %tmp19 = call i8* @llvm.objc.storeWeak(i8** %weakBlock, i8* %q) nounwind %tmp26 = call i8* @llvm.objc.loadWeakRetained(i8** %weakBlock) nounwind call void @llvm.objc.destroyWeak(i8** %weakBlock) nounwind ret i8* %tmp26 } declare i8* @llvm.objc.initWeak(i8**, i8*) declare void @llvm.objc.destroyWeak(i8**) declare i8* @llvm.objc.loadWeakRetained(i8**) declare i8* @llvm.objc.storeWeak(i8** %weakBlock, i8* %q)