65 lines · plain
1; RUN: llc < %s | FileCheck %s2; This test really wants to check that the resultant "cond_true" block only 3; has a single store in it, and that cond_true55 only has code to materialize 4; the constant and do a store. We do *not* want something like this:5;6;LBB1_3: @cond_true7; add r8, r0, r68; str r10, [r8, #+4]9;10; CHECK: ldr [[R6:r[0-9*]+]], LCP11; CHECK: cmp {{.*}}, [[R6]]12; CHECK-NOT: lt13; CHECK: strlt14 15target triple = "arm-apple-darwin8"16 17define void @foo(ptr %mc, ptr %mpp, ptr %ip, ptr %dpp, ptr %tpmm, i32 %M, ptr %tpim, ptr %tpdm, ptr %bp, ptr %ms, i32 %xmb) {18entry:19 %tmp6584 = icmp slt i32 %M, 1 ; <i1> [#uses=1]20 br i1 %tmp6584, label %return, label %bb21 22bb: ; preds = %cond_next59, %entry23 %indvar = phi i32 [ 0, %entry ], [ %k.069.0, %cond_next59 ] ; <i32> [#uses=6]24 %k.069.0 = add i32 %indvar, 1 ; <i32> [#uses=3]25 %tmp3 = getelementptr i32, ptr %mpp, i32 %indvar ; <ptr> [#uses=1]26 %tmp4 = load i32, ptr %tmp3 ; <i32> [#uses=1]27 %tmp8 = getelementptr i32, ptr %tpmm, i32 %indvar ; <ptr> [#uses=1]28 %tmp9 = load i32, ptr %tmp8 ; <i32> [#uses=1]29 %tmp10 = add i32 %tmp9, %tmp4 ; <i32> [#uses=2]30 %tmp13 = getelementptr i32, ptr %mc, i32 %k.069.0 ; <ptr> [#uses=5]31 store i32 %tmp10, ptr %tmp1332 %tmp17 = getelementptr i32, ptr %ip, i32 %indvar ; <ptr> [#uses=1]33 %tmp18 = load i32, ptr %tmp17 ; <i32> [#uses=1]34 %tmp22 = getelementptr i32, ptr %tpim, i32 %indvar ; <ptr> [#uses=1]35 %tmp23 = load i32, ptr %tmp22 ; <i32> [#uses=1]36 %tmp24 = add i32 %tmp23, %tmp18 ; <i32> [#uses=2]37 %tmp30 = icmp sgt i32 %tmp24, %tmp10 ; <i1> [#uses=1]38 br i1 %tmp30, label %cond_true, label %cond_next39 40cond_true: ; preds = %bb41 store i32 %tmp24, ptr %tmp1342 br label %cond_next43 44cond_next: ; preds = %cond_true, %bb45 %tmp39 = load i32, ptr %tmp13 ; <i32> [#uses=1]46 %tmp42 = getelementptr i32, ptr %ms, i32 %k.069.0 ; <ptr> [#uses=1]47 %tmp43 = load i32, ptr %tmp42 ; <i32> [#uses=1]48 %tmp44 = add i32 %tmp43, %tmp39 ; <i32> [#uses=2]49 store i32 %tmp44, ptr %tmp1350 %tmp52 = icmp slt i32 %tmp44, -987654321 ; <i1> [#uses=1]51 br i1 %tmp52, label %cond_true55, label %cond_next5952 53cond_true55: ; preds = %cond_next54 store i32 -987654321, ptr %tmp1355 br label %cond_next5956 57cond_next59: ; preds = %cond_true55, %cond_next58 %tmp61 = add i32 %indvar, 2 ; <i32> [#uses=1]59 %tmp65 = icmp sgt i32 %tmp61, %M ; <i1> [#uses=1]60 br i1 %tmp65, label %return, label %bb61 62return: ; preds = %cond_next59, %entry63 ret void64}65