1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-apple-darwin | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CodeGen should align the top of the loop, which differs from the loop 4*9880d681SAndroid Build Coastguard Worker; header in this case. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK: jmp LBB0_2 7*9880d681SAndroid Build Coastguard Worker; CHECK: .p2align 8*9880d681SAndroid Build Coastguard Worker; CHECK: LBB0_1: 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker@A = common global [100 x i32] zeroinitializer, align 32 ; <[100 x i32]*> [#uses=1] 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine i8* @test(i8* %Q, i32* %L) nounwind { 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker %tmp = tail call i32 (...) @foo() nounwind ; <i32> [#uses=2] 15*9880d681SAndroid Build Coastguard Worker %tmp1 = inttoptr i32 %tmp to i8* ; <i8*> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker br label %bb1 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerbb: ; preds = %bb1, %bb1 19*9880d681SAndroid Build Coastguard Worker %indvar.next = add i32 %P.0.rec, 1 ; <i32> [#uses=1] 20*9880d681SAndroid Build Coastguard Worker br label %bb1 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerbb1: ; preds = %bb, %entry 23*9880d681SAndroid Build Coastguard Worker %P.0.rec = phi i32 [ 0, %entry ], [ %indvar.next, %bb ] ; <i32> [#uses=2] 24*9880d681SAndroid Build Coastguard Worker %P.0 = getelementptr i8, i8* %tmp1, i32 %P.0.rec ; <i8*> [#uses=3] 25*9880d681SAndroid Build Coastguard Worker %tmp2 = load i8, i8* %P.0, align 1 ; <i8> [#uses=1] 26*9880d681SAndroid Build Coastguard Worker switch i8 %tmp2, label %bb4 [ 27*9880d681SAndroid Build Coastguard Worker i8 12, label %bb 28*9880d681SAndroid Build Coastguard Worker i8 42, label %bb 29*9880d681SAndroid Build Coastguard Worker ] 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerbb4: ; preds = %bb1 32*9880d681SAndroid Build Coastguard Worker %tmp3 = ptrtoint i8* %P.0 to i32 ; <i32> [#uses=1] 33*9880d681SAndroid Build Coastguard Worker %tmp4 = sub i32 %tmp3, %tmp ; <i32> [#uses=1] 34*9880d681SAndroid Build Coastguard Worker %tmp5 = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %tmp4 ; <i32*> [#uses=1] 35*9880d681SAndroid Build Coastguard Worker store i32 4, i32* %tmp5, align 4 36*9880d681SAndroid Build Coastguard Worker ret i8* %P.0 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdeclare i32 @foo(...) 40