brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · c9ed1ea Raw
81 lines · plain
1; RUN: opt < %s -passes=aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s2 3declare void @capture(ptr)4declare ptr @get_ptr()5 6; CHECK-LABEL: address_capture7; CHECK: NoAlias:	i32* %a, i32* %p8; CHECK: NoModRef:  Ptr: i32* %a	<->  %p = call ptr @get_ptr()9define void @address_capture() {10  %a = alloca i3211  call void @capture(ptr captures(address) %a)12  %p = call ptr @get_ptr()13  store i32 0, ptr %p14  load i32, ptr %a15  ret void16}17 18; CHECK-LABEL: read_only_capture19; CHECK: MayAlias:	i32* %a, i32* %p20; CHECK: Just Ref:  Ptr: i32* %a	<->  %p = call ptr @get_ptr()21define void @read_only_capture() {22  %a = alloca i3223  call void @capture(ptr captures(address, read_provenance) %a)24  %p = call ptr @get_ptr()25  store i32 0, ptr %p26  load i32, ptr %a27  ret void28}29 30; CHECK-LABEL: address_capture_and_full_capture31; CHECK: MayAlias:	i32* %a, i32* %p32; CHECK: Both ModRef:  Ptr: i32* %a	<->  %p = call ptr @get_ptr()33define void @address_capture_and_full_capture() {34  %a = alloca i3235  call void @capture(ptr captures(address) %a)36  call void @capture(ptr %a)37  %p = call ptr @get_ptr()38  store i32 0, ptr %p39  load i32, ptr %a40  ret void41}42 43; CHECK-LABEL: address_capture_and_full_capture_commuted44; CHECK: MayAlias:	i32* %a, i32* %p45; CHECK: Both ModRef:  Ptr: i32* %a	<->  %p = call ptr @get_ptr()46define void @address_capture_and_full_capture_commuted() {47  %a = alloca i3248  call void @capture(ptr %a)49  call void @capture(ptr captures(address) %a)50  %p = call ptr @get_ptr()51  store i32 0, ptr %p52  load i32, ptr %a53  ret void54}55 56; CHECK-LABEL: read_only_capture_and_full_capture57; CHECK: MayAlias:	i32* %a, i32* %p58; CHECK: Both ModRef:  Ptr: i32* %a	<->  %p = call ptr @get_ptr()59define void @read_only_capture_and_full_capture() {60  %a = alloca i3261  call void @capture(ptr captures(address, read_provenance) %a)62  call void @capture(ptr %a)63  %p = call ptr @get_ptr()64  store i32 0, ptr %p65  load i32, ptr %a66  ret void67}68 69; CHECK-LABEL: read_only_capture_and_full_capture_commuted70; CHECK: MayAlias:	i32* %a, i32* %p71; CHECK: Both ModRef:  Ptr: i32* %a	<->  %p = call ptr @get_ptr()72define void @read_only_capture_and_full_capture_commuted() {73  %a = alloca i3274  call void @capture(ptr %a)75  call void @capture(ptr captures(address, read_provenance) %a)76  %p = call ptr @get_ptr()77  store i32 0, ptr %p78  load i32, ptr %a79  ret void80}81