xref: /llvm-project/llvm/test/Analysis/BasicAA/inttoptr_constexpr.ll (revision 5f57ad85a1a7c46eb43eee3c7d93b11d8fd7fcfa)
1; RUN: opt -passes=aa-eval -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s
2
3; CHECK: MayAlias: i8* %a, i8* %gep
4define void @inttoptr_alloca() {
5  %a = alloca i8
6  %a.int = ptrtoint ptr %a to i64
7  %a.int.1 = add i64 %a.int, 1
8  %gep = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %a.int.1
9  %load = load i8, ptr %gep
10  store i8 1, ptr %a
11  ret void
12}
13
14; CHECK: MayAlias: i8* %a, i8* %gep
15define void @inttoptr_alloca_unknown_relation(i64 %offset) {
16  %a = alloca i8
17  %a.int = ptrtoint ptr %a to i64
18  %gep = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %offset
19  %load = load i8, ptr %gep
20  store i8 1, ptr %a
21  ret void
22}
23
24; CHECK: NoAlias: i8* %a, i8* %gep
25define void @inttoptr_alloca_noescape(i64 %offset) {
26  %a = alloca i8
27  %gep = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %offset
28  %load = load i8, ptr %gep
29  store i8 1, ptr %a
30  ret void
31}
32
33; CHECK: MayAlias: i8* %a, i8* %gep
34define void @inttoptr_noalias(ptr noalias %a) {
35  %a.int = ptrtoint ptr %a to i64
36  %a.int.1 = add i64 %a.int, 1
37  %gep = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %a.int.1
38  %load = load i8, ptr %gep
39  store i8 1, ptr %a
40  ret void
41}
42
43; CHECK: NoAlias: i8* %a, i8* %gep
44define void @inttoptr_noalias_noescape(ptr noalias %a, i64 %offset) {
45  %gep = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %offset
46  %load = load i8, ptr %gep
47  store i8 1, ptr %a
48  ret void
49}
50