98 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2;RUN: opt -passes=mem2reg -S < %s | FileCheck %s3 4declare i1 @cond()5 6define i32 @foo() {7; CHECK-LABEL: @foo(8; CHECK-NEXT: Entry:9; CHECK-NEXT: [[C1:%.*]] = call i1 @cond()10; CHECK-NEXT: br i1 [[C1]], label [[STORE1:%.*]], label [[STORE2:%.*]]11; CHECK: Block1:12; CHECK-NEXT: br label [[JOIN:%.*]]13; CHECK: Block2:14; CHECK-NEXT: br label [[JOIN]]15; CHECK: Block3:16; CHECK-NEXT: br label [[JOIN]]17; CHECK: Block4:18; CHECK-NEXT: br label [[JOIN]]19; CHECK: Block5:20; CHECK-NEXT: br label [[JOIN]]21; CHECK: Store1:22; CHECK-NEXT: br label [[JOIN]]23; CHECK: Block6:24; CHECK-NEXT: br label [[JOIN]]25; CHECK: Block7:26; CHECK-NEXT: br label [[JOIN]]27; CHECK: Block8:28; CHECK-NEXT: br label [[JOIN]]29; CHECK: Block9:30; CHECK-NEXT: br label [[JOIN]]31; CHECK: Block10:32; CHECK-NEXT: br label [[JOIN]]33; CHECK: Store2:34; CHECK-NEXT: br label [[JOIN]]35; CHECK: Block11:36; CHECK-NEXT: br label [[JOIN]]37; CHECK: Block12:38; CHECK-NEXT: br label [[JOIN]]39; CHECK: Block13:40; CHECK-NEXT: br label [[JOIN]]41; CHECK: Block14:42; CHECK-NEXT: br label [[JOIN]]43; CHECK: Block15:44; CHECK-NEXT: br label [[JOIN]]45; CHECK: Block16:46; CHECK-NEXT: br label [[JOIN]]47; CHECK: Join:48; CHECK-NEXT: [[VAL_0:%.*]] = phi i32 [ 1, [[STORE1]] ], [ 2, [[STORE2]] ], [ poison, [[BLOCK1:%.*]] ], [ poison, [[BLOCK2:%.*]] ], [ poison, [[BLOCK3:%.*]] ], [ poison, [[BLOCK4:%.*]] ], [ poison, [[BLOCK5:%.*]] ], [ poison, [[BLOCK6:%.*]] ], [ poison, [[BLOCK7:%.*]] ], [ poison, [[BLOCK8:%.*]] ], [ poison, [[BLOCK9:%.*]] ], [ poison, [[BLOCK10:%.*]] ], [ poison, [[BLOCK11:%.*]] ], [ poison, [[BLOCK12:%.*]] ], [ poison, [[BLOCK13:%.*]] ], [ poison, [[BLOCK14:%.*]] ], [ poison, [[BLOCK15:%.*]] ], [ poison, [[BLOCK16:%.*]] ]49; CHECK-NEXT: ret i32 [[VAL_0]]50;51Entry:52 %val = alloca i3253 %c1 = call i1 @cond()54 br i1 %c1, label %Store1, label %Store255Block1:56 br label %Join57Block2:58 br label %Join59Block3:60 br label %Join61Block4:62 br label %Join63Block5:64 br label %Join65Store1:66 store i32 1, ptr %val67 br label %Join68Block6:69 br label %Join70Block7:71 br label %Join72Block8:73 br label %Join74Block9:75 br label %Join76Block10:77 br label %Join78Store2:79 store i32 2, ptr %val80 br label %Join81Block11:82 br label %Join83Block12:84 br label %Join85Block13:86 br label %Join87Block14:88 br label %Join89Block15:90 br label %Join91Block16:92 br label %Join93Join:94; Phi inserted here should have operands appended deterministically95 %result = load i32, ptr %val96 ret i32 %result97}98