Files
clang-p2996/llvm/test/CodeGen/MLRegalloc/bb-profile-dump.ll
Aiden Grossman 35714e3a9c [MLGO] Change MBB Profile Dump from using MBB numbers to MBB IDs
Currenty, setting the -mbb-profile-dump dumps a CSV file with blocks
inside an individual function identified by their MBB numbers. This
patch changes the MBBs to be identified by their ID which is set at MBB
creation and not changed afterwards, making it inherently stable
throughout the backend. This alleviates concerns with the MBB IDs
changing between the profile dump and what ends up in the final object
file. The MBBs inside the SHT_LLVM_BB_ADDR_MAP sections are also
identified using their MBB ID rather than number, so if we want to match
them up we need to identify the MBBs here by number.

Reviewed By: mtrofin, rahmanl

Differential Revision: https://reviews.llvm.org/D147366
2023-04-14 07:04:07 +00:00

40 lines
1.2 KiB
LLVM

; REQUIRES: x86-registered-target
;
; Check that the basic block profile dump outputs data and in the correct
; format.
;
; RUN: llc -mtriple=x86_64-linux-unknown -o /dev/null -basic-block-sections=labels -mbb-profile-dump=- %s | FileCheck %s
; bb profile dump is not supported on NVPTX
; UNSUPPORTED: target=nvptx{{.*}}
; Check that given a simple case, we can return the default MBFI
define i64 @f2(i64 %a, i64 %b) {
%sum = add i64 %a, %b
ret i64 %sum
}
define i64 @f1() {
%sum = call i64 @f2(i64 2, i64 2)
%isEqual = icmp eq i64 %sum, 4
br i1 %isEqual, label %ifEqual, label %ifNotEqual
ifEqual:
ret i64 0
ifNotEqual:
ret i64 %sum
}
; CHECK: f2,0,1.000000e+00
; CHECK-NEXT: f1,0,1.000000e+00
; CHECK-NEXT: f1,1,5.000000e-01
; CHECK-NEXT: f1,2,1.000000e+00
; Check that if we pass -mbb-profile-dump but don't set -basic-block-sections,
; we get an appropriate error message
; RUN: not llc -mtriple=x86_64-linux-unknown -o /dev/null -mbb-profile-dump=- %s 2>&1 | FileCheck --check-prefix=NO-SECTIONS %s
; NO-SECTIONS: <unknown>:0: error: Unable to find BB labels for MBB profile dump. -mbb-profile-dump must be called with -basic-block-sections=labels