mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
36a3960cd7
If a block has non-analyzable branches, the listed successors don't need to add up to one. For example, if a block has a conditional tail call, that tail call will not have a corresponding successor in the successor list, but will still be a possible branch. Differential Revision: https://reviews.llvm.org/D30556 llvm-svn: 297054
37 lines
732 B
LLVM
37 lines
732 B
LLVM
; RUN: llc -march=hexagon < %s
|
|
|
|
; Check that branch probabilities are set correctly after performing the
|
|
; simple variant of if-conversion. The converted block has a branch that
|
|
; is not analyzable.
|
|
|
|
target triple = "hexagon"
|
|
|
|
declare void @foo()
|
|
|
|
; CHECK-LABEL: danny
|
|
; CHECK: if (p0.new) jump:nt foo
|
|
define void @danny(i32 %x) {
|
|
%t0 = icmp sgt i32 %x, 0
|
|
br i1 %t0, label %tail, label %exit, !prof !0
|
|
tail:
|
|
tail call void @foo();
|
|
ret void
|
|
exit:
|
|
ret void
|
|
}
|
|
|
|
; CHECK-LABEL: sammy
|
|
; CHECK: if (!p0.new) jump:t foo
|
|
define void @sammy(i32 %x) {
|
|
%t0 = icmp sgt i32 %x, 0
|
|
br i1 %t0, label %exit, label %tail, !prof !0
|
|
tail:
|
|
tail call void @foo();
|
|
ret void
|
|
exit:
|
|
ret void
|
|
}
|
|
|
|
!0 = !{!"branch_weights", i32 1, i32 2000}
|
|
|