brintos

brintos / llvm-project-archived public Read only

0
0
Text · 890 B · 8a57a92 Raw
27 lines · plain
1; RUN: opt -passes=objc-arc -S < %s | FileCheck -check-prefix=ENABLE -check-prefix=CHECK %s2; RUN: opt -passes=objc-arc -arc-opt-max-ptr-states=1 -S < %s | FileCheck -check-prefix=DISABLE -check-prefix=CHECK %s3 4@g0 = common global ptr null, align 85 6; CHECK: call ptr @llvm.objc.retain7; ENABLE-NOT: call ptr @llvm.objc.retain8; DISABLE: call ptr @llvm.objc.retain9; CHECK: call void @llvm.objc.release10; ENABLE-NOT: call void @llvm.objc.release11; DISABLE: call void @llvm.objc.release12 13define void @foo0(ptr %a) {14  %1 = tail call ptr @llvm.objc.retain(ptr %a)15  %2 = tail call ptr @llvm.objc.retain(ptr %a)16  %3 = load ptr, ptr @g0, align 817  store ptr %a, ptr @g0, align 818  tail call void @llvm.objc.release(ptr %3)19  tail call void @llvm.objc.release(ptr %a), !clang.imprecise_release !020  ret void21}22 23declare ptr @llvm.objc.retain(ptr)24declare void @llvm.objc.release(ptr)25 26!0 = !{}27