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