[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Analysis / BasicAA / noalias-inttoptr.ll
blobee3fd53875b0b1431481c7190204ef0b35ff0925
1 ; RUN: opt < %s -basic-aa -aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s
2 target datalayout = "p:64:64"
4 declare void @escape(i8* %ptr)
6 ; Verify that unescaped noalias parameter does not alias inttoptr
7 define void @test1(i8* noalias %P, i64 %Q_as_int) {
8   ; CHECK-LABEL: Function: test1:
9   ; CHECK: NoAlias:     i8* %P, i8* %Q
10   %Q = inttoptr i64 %Q_as_int to i8*
11   store i8 0, i8* %P
12   store i8 1, i8* %Q
13   ret void
16 ; Verify that unescaped alloca does not alias inttoptr
17 define void @test2(i64 %Q_as_int) {
18   ; CHECK-LABEL: Function: test2:
19   ; CHECK: NoAlias:     i8* %P, i8* %Q
20   %P = alloca i8
21   %Q = inttoptr i64 %Q_as_int to i8*
22   store i8 0, i8* %P
23   store i8 1, i8* %Q
24   ret void
27 ; Verify that escaped noalias parameter may alias inttoptr
28 define void @test3(i8* noalias %P, i64 %Q_as_int) {
29   ; CHECK-LABEL: Function: test3:
30   ; CHECK: MayAlias:    i8* %P, i8* %Q
31   call void @escape(i8* %P)
32   %Q = inttoptr i64 %Q_as_int to i8*
33   store i8 0, i8* %P
34   store i8 1, i8* %Q
35   ret void
38 ; Verify that escaped alloca may alias inttoptr
39 define void @test4(i64 %Q_as_int) {
40   ; CHECK-LABEL: Function: test4:
41   ; CHECK: MayAlias:    i8* %P, i8* %Q
42   %P = alloca i8
43   call void @escape(i8* %P)
44   %Q = inttoptr i64 %Q_as_int to i8*
45   store i8 0, i8* %P
46   store i8 1, i8* %Q
47   ret void
51 ; Verify that global may alias inttoptr
52 @G = external global i8
53 define void @test5(i64 %Q_as_int) {
54   ; CHECK-LABEL: Function: test5:
55   ; CHECK: MayAlias:    i8* %Q, i8* @G
56   %Q = inttoptr i64 %Q_as_int to i8*
57   store i8 0, i8* @G
58   store i8 1, i8* %Q
59   ret void