1; RUN: opt -mem2reg < %s -S | FileCheck %s 2 3declare i32 @def(i32) 4declare i1 @use(i32) 5 6; Special case of a single-BB alloca does not apply here since the load 7; is affected by the following store. Expect this case to be identified 8; and a PHI node to be created. 9define void @test1() { 10; CHECK-LABEL: @test1( 11 entry: 12 %t = alloca i32 13 br label %loop 14 15 loop: 16 %v = load i32, i32* %t 17 %c = call i1 @use(i32 %v) 18; CHECK: [[PHI:%.*]] = phi i32 [ undef, %entry ], [ %n, %loop ] 19; CHECK: call i1 @use(i32 [[PHI]]) 20 %n = call i32 @def(i32 7) 21 store i32 %n, i32* %t 22 br i1 %c, label %loop, label %exit 23 24 exit: 25 ret void 26} 27 28; Same as above, except there is no following store. The alloca should just be 29; replaced with an undef 30define void @test2() { 31; CHECK-LABEL: @test2( 32 entry: 33 %t = alloca i32 34 br label %loop 35 36 loop: 37 %v = load i32, i32* %t 38 %c = call i1 @use(i32 %v) 39; CHECK: %c = call i1 @use(i32 undef) 40 br i1 %c, label %loop, label %exit 41 42 exit: 43 ret void 44} 45