Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Analysis / GlobalsModRef / func-memattributes.ll
blob85fc02cfc39a2168cbe3ac065590b7cc8d79252d
1 ; RUN: opt < %s -aa-pipeline=globals-aa -passes='require<globals-aa>,dse' -S | FileCheck %s
3 @X = internal global i32 4
5 define i32 @test0() {
6 ; CHECK-LABEL: @test0
7 ; CHECK: store i32 0, ptr @X
8 ; CHECK-NEXT: call i32 @func_readonly() #0
9 ; CHECK-NEXT: store i32 1, ptr @X
10   store i32 0, ptr @X
11   %x = call i32 @func_readonly() #0
12   store i32 1, ptr @X
13   ret i32 %x
16 define i32 @test1() {
17 ; CHECK-LABEL: @test1
18 ; CHECK-NOT: store
19 ; CHECK: call i32 @func_read_argmem_only() #1
20 ; CHECK-NEXT: store i32 3, ptr @X
21   store i32 2, ptr @X
22   %x = call i32 @func_read_argmem_only() #1
23   store i32 3, ptr @X
24   ret i32 %x
27 declare i32 @func_readonly() #0
28 declare i32 @func_read_argmem_only() #1
30 attributes #0 = { readonly nounwind }
31 attributes #1 = { readonly argmemonly nounwind }