1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=licm -S | FileCheck %s 3 4@a = external constant ptr 5 6define void @test(i32 %count) { 7; CHECK-LABEL: @test( 8; CHECK-NEXT: entry: 9; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr @a, align 8 10; CHECK-NEXT: br label [[FORCOND:%.*]] 11; CHECK: forcond: 12; CHECK-NEXT: [[I_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FORBODY:%.*]] ] 13; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[I_0]], [[COUNT:%.*]] 14; CHECK-NEXT: br i1 [[CMP]], label [[FORBODY]], label [[AFTERFOR:%.*]] 15; CHECK: forbody: 16; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr float, ptr [[TMP3]], i32 [[I_0]] 17; CHECK-NEXT: [[TMP7:%.*]] = uitofp i32 [[I_0]] to float 18; CHECK-NEXT: store float [[TMP7]], ptr [[ARRAYIDX]], align 4 19; CHECK-NEXT: [[INC]] = add i32 [[I_0]], 1 20; CHECK-NEXT: br label [[FORCOND]] 21; CHECK: afterfor: 22; CHECK-NEXT: ret void 23; 24entry: 25 br label %forcond 26 27forcond: 28 %i.0 = phi i32 [ 0, %entry ], [ %inc, %forbody ] 29 %cmp = icmp ult i32 %i.0, %count 30 br i1 %cmp, label %forbody, label %afterfor 31 32forbody: 33 %tmp3 = load ptr, ptr @a 34 %arrayidx = getelementptr float, ptr %tmp3, i32 %i.0 35 %tmp7 = uitofp i32 %i.0 to float 36 store float %tmp7, ptr %arrayidx 37 %inc = add i32 %i.0, 1 38 br label %forcond 39 40afterfor: 41 ret void 42} 43