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