| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -O3 -S < %s | FileCheck %s |
| |
| define void @growTables(ptr %p) { |
| ; CHECK-LABEL: define void @growTables( |
| ; CHECK-SAME: ptr [[P:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { |
| ; CHECK-NEXT: [[ENTRY:.*]]: |
| ; CHECK-NEXT: [[CALL:%.*]] = load volatile i32, ptr [[P]], align 4 |
| ; CHECK-NEXT: [[CMP71:%.*]] = icmp sgt i32 [[CALL]], 0 |
| ; CHECK-NEXT: br i1 [[CMP71]], label %[[FOR_BODY:.*]], label %[[COMMON_RET:.*]] |
| ; CHECK: [[FOR_BODY]]: |
| ; CHECK-NEXT: [[I_02:%.*]] = phi i32 [ [[INC:%.*]], %[[FOR_BODY]] ], [ 0, %[[ENTRY]] ] |
| ; CHECK-NEXT: [[CALL9:%.*]] = load volatile ptr, ptr [[P]], align 8 |
| ; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[I_02]], 1 |
| ; CHECK-NEXT: [[CMP7:%.*]] = icmp slt i32 [[INC]], [[CALL]] |
| ; CHECK-NEXT: br i1 [[CMP7]], label %[[FOR_BODY]], label %[[FOR_BODY12:.*]] |
| ; CHECK: [[FOR_BODY12]]: |
| ; CHECK-NEXT: [[CALL14:%.*]] = load volatile ptr, ptr [[P]], align 8 |
| ; CHECK-NEXT: br label %[[COMMON_RET]] |
| ; CHECK: [[COMMON_RET]]: |
| ; CHECK-NEXT: ret void |
| ; |
| entry: |
| %call = load volatile i32, ptr %p, align 4 |
| br label %for.cond |
| |
| for.cond: |
| %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ] |
| %cmp7 = icmp slt i32 %i.0, %call |
| br i1 %cmp7, label %for.body, label %for.end |
| |
| for.body: |
| %call9 = load volatile ptr, ptr %p, align 8 |
| %inc = add i32 %i.0, 1 |
| br label %for.cond |
| |
| for.end: |
| %cmp11 = icmp sgt i32 %call, 0 |
| br i1 %cmp11, label %for.body12, label %common.ret |
| |
| for.body12: |
| %call14 = load volatile ptr, ptr %p, align 8 |
| br label %common.ret |
| |
| common.ret: |
| ret void |
| } |