xref: /llvm-project/llvm/test/Analysis/AliasSet/memset.ll (revision 656bf13004d62b8f8360d8d496bb1e6e08407c22)
1; RUN: opt -passes=print-alias-sets -S -o - < %s 2>&1 | FileCheck %s
2
3@s = global i8 1, align 1
4@d = global i8 2, align 1
5
6; CHECK: Alias sets for function 'test_known_size':
7; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values.
8; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %d, LocationSize::precise(1))
9define void @test_known_size(ptr noalias %d) {
10entry:
11  call void @llvm.memset.p0.i64(ptr align 1 %d, i8 0, i64 1, i1 false)
12  ret void
13}
14
15; CHECK: Alias sets for function 'test_unknown_size':
16; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values.
17; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %d, unknown after)
18define void @test_unknown_size(ptr noalias %d, i64 %len) {
19entry:
20  call void @llvm.memset.p0.i64(ptr align 1 %d, i8 0, i64 %len, i1 false)
21  ret void
22}
23
24
25; CHECK: Alias sets for function 'test_atomic_known_size':
26; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values.
27; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %d, LocationSize::precise(1))
28define void @test_atomic_known_size(ptr noalias %d) {
29entry:
30  call void @llvm.memset.element.unordered.atomic.p0.i32(ptr align 1 %d, i8 0, i64 1, i32 1)
31  ret void
32}
33
34; CHECK: Alias sets for function 'test_atomic_unknown_size':
35; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values.
36; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %d, unknown after)
37define void @test_atomic_unknown_size(ptr noalias %d, i64 %len) {
38entry:
39  call void @llvm.memset.element.unordered.atomic.p0.i32(ptr align 1 %d, i8 0, i64 %len, i32 1)
40  ret void
41}
42
43declare void @llvm.memset.p0.i64(ptr %dest, i8 %val,
44                                   i64 %len, i1 %isvolatile)
45declare void @llvm.memset.element.unordered.atomic.p0.i32(ptr %dest,
46                                                            i8 %value,
47                                                            i64 %len,
48                                                            i32 %element_size)
49