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
40 lines
1.2 KiB
LLVM
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
|
|
|