1 ; RUN: llc < %s -mtriple=thumbv7-linux-gnueabihf %s -o - | FileCheck %s 2 3 ; Check that new water is created by splitting the basic block right after the 4 ; load instruction. Previously, new water was created before the load 5 ; instruction, which caused the pass to fail to converge. 6 7 define void @test(i1 %tst) { 8 ; CHECK-LABEL: test: 9 ; CHECK: vldr {{s[0-9]+}}, [[CONST:\.LCPI[0-9]+_[0-9]+]] 10 ; CHECK-NEXT: b.w [[CONTINUE:\.LBB[0-9]+_[0-9]+]] 11 12 ; CHECK: [[CONST]]: 13 ; CHECK-NEXT: .long 14 15 ; CHECK: [[CONTINUE]]: 16 17 entry: 18 call i32 @llvm.arm.space(i32 2000, i32 undef) 19 br i1 %tst, label %true, label %false 20 21 true: 22 %val = phi float [12345.0, %entry], [undef, %false] 23 call void @bar(float %val) 24 ret void 25 26 false: 27 br label %true 28 } 29 30 declare void @bar(float) 31 declare i32 @llvm.arm.space(i32, i32) 32