brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · f3f9faf Raw
59 lines · plain
1; RUN: opt -aa-pipeline=basic-aa -passes='print<memoryssa>,verify<memoryssa>' -disable-output < %s 2>&1 | FileCheck %s2;3; Test that various function attributes give us sane results.4 5@g = external global i326 7declare void @readonlyFunction() readonly8declare void @noattrsFunction()9 10define void @readonlyAttr() {11; CHECK: 1 = MemoryDef(liveOnEntry)12; CHECK-NEXT: store i32 013  store i32 0, ptr @g, align 414 15  %1 = alloca i32, align 416; CHECK: 2 = MemoryDef(1)17; CHECK-NEXT: store i32 018  store i32 0, ptr %1, align 419 20; CHECK: MemoryUse(1)21; CHECK-NEXT: call void @readonlyFunction()22  call void @readonlyFunction()23 24; CHECK: MemoryUse(1)25; CHECK-NEXT: call void @noattrsFunction() #26; Assume that #N is readonly27  call void @noattrsFunction() readonly28 29  ; Verify that noattrsFunction is otherwise a MemoryDef30; CHECK: 3 = MemoryDef(2)31; CHECK-NEXT: call void @noattrsFunction()32  call void @noattrsFunction()33  ret void34}35 36declare void @argMemOnly(ptr) argmemonly37 38define void @inaccessableOnlyAttr() {39  %1 = alloca i32, align 440; CHECK: 1 = MemoryDef(liveOnEntry)41; CHECK-NEXT: store i32 042  store i32 0, ptr %1, align 443 44; CHECK: 2 = MemoryDef(1)45; CHECK-NEXT: store i32 046  store i32 0, ptr @g, align 447 48; CHECK: MemoryUse(1)49; CHECK-NEXT: call void @argMemOnly(ptr %1) #50; Assume that #N is readonly51  call void @argMemOnly(ptr %1) readonly52 53; CHECK: 3 = MemoryDef(2)54; CHECK-NEXT: call void @argMemOnly(ptr %1)55  call void @argMemOnly(ptr %1)56 57  ret void58}59