xref: /llvm-project/llvm/test/Analysis/CallGraph/ignore-assumelike-calls.ll (revision 10410534696e1922cbed56b229d123b2db4acd8e)
1; RUN: opt < %s -passes=print-callgraph -disable-output 2>&1 | FileCheck %s
2; CHECK: Call graph node <<null function>><<{{.*}}>>  #uses=0
3; CHECK-NEXT:   CS<None> calls function 'other_intrinsic_use'
4; CHECK-NEXT:   CS<None> calls function 'other_cast_intrinsic_use'
5; CHECK-NEXT:   CS<None> calls function 'llvm.lifetime.start.p0'
6; CHECK-NEXT:   CS<None> calls function 'llvm.memset.p0.i64'
7; CHECK-NEXT:   CS<None> calls function 'llvm.memset.p1.i64'
8; CHECK-EMPTY:
9; CHECK-NEXT:   Call graph node for function: 'addrspacecast_only'<<{{.*}}>>  #uses=0
10; CHECK-EMPTY:
11; CHECK-NEXT:   Call graph node for function: 'bitcast_only'<<{{.*}}>>  #uses=0
12; CHECK-EMPTY:
13; CHECK-NEXT:   Call graph node for function: 'llvm.lifetime.start.p0'<<{{.*}}>>  #uses=3
14; CHECK-EMPTY:
15; CHECK-NEXT:   Call graph node for function: 'llvm.memset.p0.i64'<<{{.*}}>>  #uses=2
16; CHECK-EMPTY:
17; CHECK-NEXT:   Call graph node for function: 'llvm.memset.p1.i64'<<{{.*}}>>  #uses=2
18; CHECK-EMPTY:
19; CHECK-NEXT:   Call graph node for function: 'other_cast_intrinsic_use'<<{{.*}}>>  #uses=1
20; CHECK-NEXT:   CS<{{.*}}> calls function 'llvm.memset.p1.i64'
21; CHECK-EMPTY:
22; CHECK-NEXT:   Call graph node for function: 'other_intrinsic_use'<<{{.*}}>>  #uses=1
23; CHECK-NEXT:   CS<{{.*}}> calls function 'llvm.memset.p0.i64'
24; CHECK-EMPTY:
25; CHECK-NEXT:   Call graph node for function: 'used_by_lifetime'<<{{.*}}>>  #uses=0
26; CHECK-NEXT:   CS<{{.*}}> calls function 'llvm.lifetime.start.p0'
27; CHECK-EMPTY:
28; CHECK-NEXT:   Call graph node for function: 'used_by_lifetime_cast'<<{{.*}}>>  #uses=0
29; CHECK-NEXT:   CS<{{.*}}> calls function 'llvm.lifetime.start.p0'
30; CHECK-EMPTY:
31
32define internal void @used_by_lifetime() {
33entry:
34  call void @llvm.lifetime.start.p0(i64 4, ptr @used_by_lifetime)
35  ret void
36}
37
38define internal void @used_by_lifetime_cast() addrspace(1) {
39  call void @llvm.lifetime.start.p0(i64 4, ptr addrspacecast (ptr addrspace(1) @used_by_lifetime_cast to ptr))
40  ret void
41}
42
43define internal void @bitcast_only() {
44entry:
45  %c = bitcast ptr @bitcast_only to ptr
46  ret void
47}
48
49define internal void @addrspacecast_only() addrspace(1) {
50entry:
51  %c = addrspacecast ptr addrspace(1) @addrspacecast_only to ptr
52  ret void
53}
54
55define internal void @other_intrinsic_use() {
56  call void @llvm.memset.p0.i64(ptr @other_intrinsic_use, i8 0, i64 1024, i1 false)
57  ret void
58}
59
60define internal void @other_cast_intrinsic_use() {
61  call void @llvm.memset.p1.i64(ptr addrspace(1) addrspacecast (ptr @other_cast_intrinsic_use to ptr addrspace(1)), i8 0, i64 1024, i1 false)
62  ret void
63}
64
65declare void @llvm.lifetime.start.p0(i64, ptr nocapture)
66declare void @llvm.memset.p0.i64(ptr, i8, i64, i1 immarg)
67declare void @llvm.memset.p1.i64(ptr addrspace(1), i8, i64, i1 immarg)
68