Mircea Trofin bb6497ffa6
[BPI] Reuse the AsmWriter's BB naming scheme in BranchProbabilityPrinterPass (#73593)
When using `BranchProbabilityPrinterPass`, if a BB has no name, we get pretty unusable information like `edge -> has probability...` (i.e. we have no idea what the vertices of that edge are).

This patch uses `printAsOperand`, which uses the same naming scheme as `Function::dump`, so for example during debugging sessions, the IR obtained from a function and the names used by `BranchProbabilityPrinterPass` will match.

A shortcoming is that `printAsOperand` will result in the numbering algorithm re-running for every edge and every vertex (when `BranchProbabilityPrinterPass` is run on a function). If, for the given scenario, this is a problem, we can revisit this subsequently.

Another nuance is that the entry basic block will be numbered, which may be slightly confusing when it's anonymous, but it's easily identifiable - the first edge would have it as source (and the number should be easily recognizable)
2023-12-02 13:01:48 -08:00

30 lines
816 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
; RUN: opt < %s -passes='print<branch-prob>' -disable-output 2>&1 | FileCheck %s
define void @fct() {
; CHECK-LABEL: 'fct'
; CHECK-NEXT: ---- Branch Probabilities ----
; CHECK-NEXT: edge %entry -> %0 probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
; CHECK-NEXT: edge %0 -> %1 probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
;
entry:
br label %0
0:
br label %1
1:
ret void
}
define void @fct2() {
; CHECK-LABEL: 'fct2'
; CHECK-NEXT: ---- Branch Probabilities ----
; CHECK-NEXT: edge %0 -> %1 probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
; CHECK-NEXT: edge %1 -> %2 probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
;
br label %1
1:
br label %2
2:
ret void
}