brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · 09835cb Raw
104 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -passes=inline %s | FileCheck %s3 4declare ptr @get_ptr()5declare void @capture(ptr)6 7define void @callee_no_capture(ptr noalias %p) {8; CHECK-LABEL: define void @callee_no_capture(9; CHECK-SAME: ptr noalias [[P:%.*]]) {10; CHECK-NEXT:    [[P2:%.*]] = call ptr @get_ptr()11; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[P]], align 412; CHECK-NEXT:    store i32 [[V]], ptr [[P2]], align 413; CHECK-NEXT:    ret void14;15  %p2 = call ptr @get_ptr()16  %v = load i32, ptr %p17  store i32 %v, ptr %p218  ret void19}20 21define void @test_no_capture(ptr %p) {22; CHECK-LABEL: define void @test_no_capture(23; CHECK-SAME: ptr [[P:%.*]]) {24; CHECK-NEXT:    call void @llvm.experimental.noalias.scope.decl(metadata [[META0:![0-9]+]])25; CHECK-NEXT:    [[P2_I:%.*]] = call ptr @get_ptr(), !noalias [[META0]]26; CHECK-NEXT:    [[V_I:%.*]] = load i32, ptr [[P]], align 4, !alias.scope [[META0]]27; CHECK-NEXT:    store i32 [[V_I]], ptr [[P2_I]], align 4, !noalias [[META0]]28; CHECK-NEXT:    ret void29;30  call void @callee_no_capture(ptr %p)31  ret void32}33 34define void @callee_capture(ptr noalias %p) {35; CHECK-LABEL: define void @callee_capture(36; CHECK-SAME: ptr noalias [[P:%.*]]) {37; CHECK-NEXT:    call void @capture(ptr [[P]])38; CHECK-NEXT:    [[P2:%.*]] = call ptr @get_ptr()39; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[P]], align 440; CHECK-NEXT:    store i32 [[V]], ptr [[P2]], align 441; CHECK-NEXT:    ret void42;43  call void @capture(ptr %p)44  %p2 = call ptr @get_ptr()45  %v = load i32, ptr %p46  store i32 %v, ptr %p247  ret void48}49 50define void @test_capture(ptr %p) {51; CHECK-LABEL: define void @test_capture(52; CHECK-SAME: ptr [[P:%.*]]) {53; CHECK-NEXT:    call void @llvm.experimental.noalias.scope.decl(metadata [[META3:![0-9]+]])54; CHECK-NEXT:    call void @capture(ptr [[P]])55; CHECK-NEXT:    [[P2_I:%.*]] = call ptr @get_ptr()56; CHECK-NEXT:    [[V_I:%.*]] = load i32, ptr [[P]], align 4, !alias.scope [[META3]]57; CHECK-NEXT:    store i32 [[V_I]], ptr [[P2_I]], align 458; CHECK-NEXT:    ret void59;60  call void @callee_capture(ptr %p)61  ret void62}63 64define void @callee_addr_only_capture(ptr noalias %p) {65; CHECK-LABEL: define void @callee_addr_only_capture(66; CHECK-SAME: ptr noalias [[P:%.*]]) {67; CHECK-NEXT:    call void @capture(ptr captures(address) [[P]])68; CHECK-NEXT:    [[P2:%.*]] = call ptr @get_ptr()69; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[P]], align 470; CHECK-NEXT:    store i32 [[V]], ptr [[P2]], align 471; CHECK-NEXT:    ret void72;73  call void @capture(ptr captures(address) %p)74  %p2 = call ptr @get_ptr()75  %v = load i32, ptr %p76  store i32 %v, ptr %p277  ret void78}79 80define void @test_addr_only_capture(ptr %p) {81; CHECK-LABEL: define void @test_addr_only_capture(82; CHECK-SAME: ptr [[P:%.*]]) {83; CHECK-NEXT:    call void @llvm.experimental.noalias.scope.decl(metadata [[META6:![0-9]+]])84; CHECK-NEXT:    call void @capture(ptr captures(address) [[P]])85; CHECK-NEXT:    [[P2_I:%.*]] = call ptr @get_ptr(), !noalias [[META6]]86; CHECK-NEXT:    [[V_I:%.*]] = load i32, ptr [[P]], align 4, !alias.scope [[META6]]87; CHECK-NEXT:    store i32 [[V_I]], ptr [[P2_I]], align 4, !noalias [[META6]]88; CHECK-NEXT:    ret void89;90  call void @callee_addr_only_capture(ptr %p)91  ret void92}93;.94; CHECK: [[META0]] = !{[[META1:![0-9]+]]}95; CHECK: [[META1]] = distinct !{[[META1]], [[META2:![0-9]+]], !"callee_no_capture: %p"}96; CHECK: [[META2]] = distinct !{[[META2]], !"callee_no_capture"}97; CHECK: [[META3]] = !{[[META4:![0-9]+]]}98; CHECK: [[META4]] = distinct !{[[META4]], [[META5:![0-9]+]], !"callee_capture: %p"}99; CHECK: [[META5]] = distinct !{[[META5]], !"callee_capture"}100; CHECK: [[META6]] = !{[[META7:![0-9]+]]}101; CHECK: [[META7]] = distinct !{[[META7]], [[META8:![0-9]+]], !"callee_addr_only_capture: %p"}102; CHECK: [[META8]] = distinct !{[[META8]], !"callee_addr_only_capture"}103;.104