1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2;RUN: opt -passes=mem2reg -S < %s | FileCheck %s 3 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 i32 53 %c1 = call i1 @cond() 54 br i1 %c1, label %Store1, label %Store2 55Block1: 56 br label %Join 57Block2: 58 br label %Join 59Block3: 60 br label %Join 61Block4: 62 br label %Join 63Block5: 64 br label %Join 65Store1: 66 store i32 1, ptr %val 67 br label %Join 68Block6: 69 br label %Join 70Block7: 71 br label %Join 72Block8: 73 br label %Join 74Block9: 75 br label %Join 76Block10: 77 br label %Join 78Store2: 79 store i32 2, ptr %val 80 br label %Join 81Block11: 82 br label %Join 83Block12: 84 br label %Join 85Block13: 86 br label %Join 87Block14: 88 br label %Join 89Block15: 90 br label %Join 91Block16: 92 br label %Join 93Join: 94; Phi inserted here should have operands appended deterministically 95 %result = load i32, ptr %val 96 ret i32 %result 97} 98