mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 13:33:37 +02:00
249a230d23
The order in which branches appear in ImmBranches is approximately their order within the function body. By visiting later branches first, we reduce the distance between earlier forward branches and their targets, making it more likely that the cbn?z optimization, which can only apply to forward branches, will succeed for those earlier branches. Differential Revision: http://reviews.llvm.org/D9185 llvm-svn: 235640
55 lines
885 B
LLVM
55 lines
885 B
LLVM
; RUN: llc -mtriple thumbv7-unknown-linux -o - %s | FileCheck %s
|
|
|
|
declare void @x()
|
|
declare void @y()
|
|
|
|
define void @f(i32 %x, i32 %y) {
|
|
; CHECK-LABEL: f:
|
|
; CHECK: cbnz
|
|
%p = icmp eq i32 %x, 0
|
|
br i1 %p, label %t, label %f
|
|
|
|
t:
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
; CHECK: cbnz
|
|
%q = icmp eq i32 %y, 0
|
|
br i1 %q, label %t2, label %f
|
|
|
|
t2:
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
call void @x()
|
|
br label %f
|
|
|
|
f:
|
|
call void @y()
|
|
ret void
|
|
}
|