| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt -passes=mem2reg < %s -S | FileCheck %s |
| ; Special case of a single-BB alloca does not apply here since the load |
| ; is affected by the following store. Expect this case to be identified |
| ; and a PHI node to be created. |
| ; CHECK-NEXT: br label [[LOOP:%.*]] |
| ; CHECK-NEXT: [[T_0:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[N:%.*]], [[LOOP]] ] |
| ; CHECK-NEXT: [[C:%.*]] = call i1 @use(i32 [[T_0]]) |
| ; CHECK-NEXT: [[N]] = call i32 @def(i32 7) |
| ; CHECK-NEXT: br i1 [[C]], label [[LOOP]], label [[EXIT:%.*]] |
| %c = call i1 @use(i32 %v) |
| %n = call i32 @def(i32 7) |
| br i1 %c, label %loop, label %exit |
| ; Same as above, except there is no following store. The alloca should just be |
| ; CHECK-NEXT: br label [[LOOP:%.*]] |
| ; CHECK-NEXT: [[C:%.*]] = call i1 @use(i32 undef) |
| ; CHECK-NEXT: br i1 [[C]], label [[LOOP]], label [[EXIT:%.*]] |
| %c = call i1 @use(i32 %v) |
| br i1 %c, label %loop, label %exit |