; 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 }