brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.8 KiB · 93290c3 Raw
214 lines · plain
1; RUN: opt -passes=print-alias-sets -S -o - < %s 2>&1 | FileCheck %s2 3@s = global i8 1, align 14@d = global i8 2, align 15 6 7; CHECK: Alias sets for function 'test_known_size':8; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.9; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %d, LocationSize::precise(1))10; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Memory locations: (ptr %s, LocationSize::precise(1))11define void @test_known_size(ptr noalias %s, ptr noalias %d) {12entry:13  call void @llvm.memcpy.p0.p0.i64(ptr %d, ptr %s, i64 1, i1 false)14  ret void15}16 17; CHECK: Alias sets for function 'test_unknown_size':18; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.19; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %d, unknown after)20; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Memory locations: (ptr %s, unknown after)21define void @test_unknown_size(ptr noalias %s, ptr noalias %d, i64 %len) {22entry:23  call void @llvm.memcpy.p0.p0.i64(ptr %d, ptr %s, i64 %len, i1 false)24  ret void25}26 27 28; CHECK: Alias sets for function 'test1':29; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.30; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %a, LocationSize::precise(1))31; CHECK-NOT:    1 Unknown instructions32; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Memory locations: (ptr %d, LocationSize::precise(1)), (ptr %s, LocationSize::precise(1))33; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))34define void @test1(ptr %s, ptr %d) {35entry:36  %a = alloca i8, align 137  %b = alloca i8, align 138  store i8 1, ptr %a, align 139  call void @llvm.memcpy.p0.p0.i64(ptr %d, ptr %s, i64 1, i1 false)40  store i8 1, ptr %b, align 141  ret void42}43 44; CHECK: Alias sets for function 'test1_atomic':45; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.46; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %a, LocationSize::precise(1))47; CHECK-NOT:    1 Unknown instructions48; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Memory locations: (ptr %d, LocationSize::precise(1)), (ptr %s, LocationSize::precise(1))49; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))50define void @test1_atomic(ptr %s, ptr %d) {51entry:52  %a = alloca i8, align 153  %b = alloca i8, align 154  store atomic i8 1, ptr %a unordered, align 155  call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %d, ptr align 1 %s, i64 1, i32 1)56  store atomic i8 1, ptr %b unordered, align 157  ret void58}59 60; CHECK: Alias sets for function 'test2':61; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.62; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %a, LocationSize::precise(1))63; CHECK-NOT:    1 Unknown instructions64; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref    Memory locations: (ptr %d, LocationSize::precise(1)), (ptr %s, LocationSize::precise(1))65; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))66define void @test2(ptr %s, ptr %d) {67entry:68  %a = alloca i8, align 169  %b = alloca i8, align 170  store i8 1, ptr %a, align 171  call void @llvm.memcpy.p0.p0.i64(ptr %d, ptr %s, i64 1, i1 true)72  store i8 1, ptr %b, align 173  ret void74}75 76; CHECK: Alias sets for function 'test3':77; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.78; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %a, LocationSize::precise(1))79; CHECK-NOT:    1 Unknown instructions80; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Memory locations: (ptr %d, LocationSize::precise(1)), (ptr %s, LocationSize::precise(1))81; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))82define void @test3(ptr %s, ptr %d) {83entry:84  %a = alloca i8, align 185  %b = alloca i8, align 186  store i8 1, ptr %a, align 187  call void @llvm.memmove.p0.p0.i64(ptr %d, ptr %s, i64 1, i1 false)88  store i8 1, ptr %b, align 189  ret void90}91 92; CHECK: Alias sets for function 'test3_atomic':93; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.94; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %a, LocationSize::precise(1))95; CHECK-NOT:    1 Unknown instructions96; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Memory locations: (ptr %d, LocationSize::precise(1)), (ptr %s, LocationSize::precise(1))97; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))98define void @test3_atomic(ptr %s, ptr %d) {99entry:100  %a = alloca i8, align 1101  %b = alloca i8, align 1102  store atomic i8 1, ptr %a unordered, align 1103  call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %d, ptr align 1 %s, i64 1, i32 1)104  store atomic i8 1, ptr %b unordered, align 1105  ret void106}107 108; CHECK: Alias sets for function 'test4':109; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.110; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %a, LocationSize::precise(1))111; CHECK-NOT:    1 Unknown instructions112; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref    Memory locations: (ptr %d, LocationSize::precise(1)), (ptr %s, LocationSize::precise(1))113; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))114define void @test4(ptr %s, ptr %d) {115entry:116  %a = alloca i8, align 1117  %b = alloca i8, align 1118  store i8 1, ptr %a, align 1119  call void @llvm.memmove.p0.p0.i64(ptr %d, ptr %s, i64 1, i1 true)120  store i8 1, ptr %b, align 1121  ret void122}123 124; CHECK: Alias sets for function 'test5':125; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.126; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %a, LocationSize::precise(1))127; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))128define void @test5() {129entry:130  %a = alloca i8, align 1131  %b = alloca i8, align 1132  store i8 1, ptr %a, align 1133  call void @llvm.memcpy.p0.p0.i64(ptr %b, ptr %a, i64 1, i1 false)134  store i8 1, ptr %b, align 1135  ret void136}137 138; CHECK: Alias sets for function 'test5_atomic':139; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.140; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %a, LocationSize::precise(1))141; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))142define void @test5_atomic() {143entry:144  %a = alloca i8, align 1145  %b = alloca i8, align 1146  store atomic i8 1, ptr %a unordered, align 1147  call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 1, i32 1)148  store atomic i8 1, ptr %b unordered, align 1149  ret void150}151 152; CHECK: Alias sets for function 'test6':153; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.154; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %a, LocationSize::precise(1))155; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))156define void @test6() {157entry:158  %a = alloca i8, align 1159  %b = alloca i8, align 1160  store i8 1, ptr %a, align 1161  call void @llvm.memmove.p0.p0.i64(ptr %b, ptr %a, i64 1, i1 false)162  store i8 1, ptr %b, align 1163  ret void164}165 166; CHECK: Alias sets for function 'test6_atomic':167; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.168; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %a, LocationSize::precise(1))169; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))170define void @test6_atomic() {171entry:172  %a = alloca i8, align 1173  %b = alloca i8, align 1174  store atomic i8 1, ptr %a unordered, align 1175  call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 1, i32 1)176  store atomic i8 1, ptr %b unordered, align 1177  ret void178}179 180; CHECK: Alias sets for function 'test7':181; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.182; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %a, LocationSize::precise(1))183; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %b, LocationSize::precise(1))184define void @test7() {185entry:186  %a = alloca i8, align 1187  %b = alloca i8, align 1188  store i8 1, ptr %a, align 1189  call void @llvm.memcpy.p0.p0.i64(ptr %b, ptr %a, i64 1, i1 false)190  call void @llvm.memcpy.p0.p0.i64(ptr %a, ptr %b, i64 1, i1 false)191  store i8 1, ptr %b, align 1192  ret void193}194 195; CHECK: Alias sets for function 'test7_atomic':196; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.197; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %a, LocationSize::precise(1))198; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref   Memory locations: (ptr %b, LocationSize::precise(1))199define void @test7_atomic() {200entry:201  %a = alloca i8, align 1202  %b = alloca i8, align 1203  store atomic i8 1, ptr %a unordered, align 1204  call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 1, i32 1)205  call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %a, ptr align 1 %b, i64 1, i32 1)206  store atomic i8 1, ptr %b unordered, align 1207  ret void208}209 210declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1)211declare void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32)212declare void @llvm.memmove.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1)213declare void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32)214