brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · cd9686b Raw
62 lines · plain
1; RUN: opt -disable-output -passes="loop-mssa(simple-loop-unswitch<nontrivial>),print<memoryssa>" -verify-memoryssa < %s 2>&1 | FileCheck %s2 3declare ptr @malloc() allockind("alloc,uninitialized")4 5; CHECK-LABEL: MemorySSA for function: test6 7; CHECK: for.body.us:8; CHECK-NEXT: 3 = MemoryPhi({entry.split.us,liveOnEntry},{for.body.us,3})9 10; CHECK: for.body:11; CHECK-NEXT: 2 = MemoryPhi({entry.split,liveOnEntry},{for.body,1})12; CHECK-NEXT: 1 = MemoryDef(2)13; CHECK-NEXT:  %call.i = call ptr @malloc()14 15define void @test(i1 %arg) {16entry:17  br label %for.body18 19for.body:20  %call.i = call ptr @malloc()21  %cmp.i = icmp ne ptr %call.i, null22  %or.cond.i = select i1 %cmp.i, i1 %arg, i1 false23  br i1 %or.cond.i, label %exit, label %for.body24 25exit:26  ret void27}28 29; CHECK-LABEL: MemorySSA for function: test_extra_defs30 31; CHECK: entry:32; CHECK-NEXT: 1 = MemoryDef(liveOnEntry)33; CHECK-NEXT: store i8 1, ptr %p, align 134 35; CHECK: for.body.us:36; CHECK-NEXT: 5 = MemoryPhi({entry.split.us,1},{for.body.us,6})37; CHECK-NEXT: 6 = MemoryDef(5)38; CHECK-NEXT: store i8 2, ptr %p, align 139 40; CHECK: for.body:41; CHECK-NEXT: 4 = MemoryPhi({entry.split,1},{for.body,3})42; CHECK-NEXT: 2 = MemoryDef(4)43; CHECK-NEXT: store i8 2, ptr %p44; CHECK-NEXT: 3 = MemoryDef(2)45; CHECK-NEXT: %call.i = call ptr @malloc()46 47define void @test_extra_defs(ptr %p, i1 %arg) {48entry:49  store i8 1, ptr %p50  br label %for.body51 52for.body:53  store i8 2, ptr %p54  %call.i = call ptr @malloc()55  %cmp.i = icmp ne ptr %call.i, null56  %or.cond.i = select i1 %cmp.i, i1 %arg, i1 false57  br i1 %or.cond.i, label %exit, label %for.body58 59exit:60  ret void61}62