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