llvm/test/CodeGen/ARM/constant-islands.ll
Tim Northover 064da63fcb ARM: avoid duplicating branches during constant islands.
We were using a naive heuristic to determine whether a basic block already had
an unconditional branch at the end. This mostly corresponded to reality
(assuming branches got optimised) because there's not much point in a branch to
the next block, but could go wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221904 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-13 17:58:51 +00:00

26 lines
561 B
LLVM

; RUN: llc -mtriple=thumbv7-linux-gnueabihf -O0 -fast-isel=0 -o - %s | FileCheck %s
define void @test_no_duplicate_branches(float %in) {
; CHECK-LABEL: test_no_duplicate_branches:
; CHECK: vldr {{s[0-9]+}}, [[CONST:\.LCPI[0-9]+_[0-9]+]]
; CHECK: b .LBB
; CHECK-NOT: b .LBB
; CHECK: [[CONST]]:
; CHECK-NEXT: .long 1150963712
%tst = fcmp oeq float %in, 1234.5
%chain = zext i1 %tst to i32
br i1 %tst, label %true, label %false
true:
call i32 @llvm.arm.space(i32 2000, i32 undef)
ret void
false:
ret void
}
declare i32 @llvm.arm.space(i32, i32)