brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 071f77e Raw
46 lines · plain
1; RUN: opt -passes='print<memoryssa>' -disable-output < %s 2>&1 | FileCheck %s2 3; TODO: The load's MemoryUse can be defined by liveOnEntry. Since4; %p2 is a loop invariant and the MemoryLoc of load instr and store inst in5; loop block are NoAlias6;7; CHECK: MemoryUse(2)8; CHECK: %val = load i32, ptr %p29define void @gep(ptr %ptr) {10entry:11  %p1 = getelementptr i32, ptr %ptr, i32 112  br label %tmp13 14tmp:15  %p2 = getelementptr i32, ptr %p1, i32 116  br label %loop17 18loop:19  %x = phi i32 [ 0, %tmp ], [ %x.inc, %loop ]20  %val = load i32, ptr %p221  %p3 = getelementptr i32, ptr %p2, i32 122  store volatile i32 0, ptr %p323  %x.inc = add i32 %x, %val24  br label %loop25}26 27; CHECK: MemoryUse(2)28; CHECK-NEXT: %val = load i32, ptr %p229define void @load_entry_block(ptr %ptr, ptr %addr) {30entry:31  %p1 = load ptr, ptr %ptr32  br label %tmp33 34tmp:35  %p2 = getelementptr i32, ptr %p1, i32 136  br label %loop37 38loop:39  %x = phi i32 [ 0, %tmp ], [ %x.inc, %loop ]40  %val = load i32, ptr %p241  %p3 = getelementptr i32, ptr %p2, i32 142  store volatile i32 0, ptr %p343  %x.inc = add i32 %x, %val44  br label %loop45}46