Files
clang-p2996/llvm/test/Analysis/CtxProfAnalysis/flatten-zero-path.ll
Mircea Trofin 6329355860 [ctxprof] Move test serialization to yaml (#122545)
We have a textual representation of contextual profiles for test scenarios, mainly. This patch moves that to YAML instead of JSON. YAML is more succinct and readable (some of the .ll tests should be illustrative). In addition, JSON is parse-able by the YAML reader.

A subsequent patch will address deserialization.

(thanks, @kazutakahirata, for showing me how to use the llvm YAML reader/writer APIs, which I incorrectly thought to be more low-level than the JSON ones!)
2025-01-10 18:04:25 -08:00

57 lines
1.5 KiB
LLVM

; Check that flattened profile lowering handles cold subgraphs that end in "unreachable"
; RUN: split-file %s %t
; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
; RUN: opt -passes=ctx-prof-flatten %t/example.ll -use-ctx-profile=%t/profile.ctxprofdata -S -o - | FileCheck %s
; CHECK-LABEL: entry:
; CHECK: br i1 %t, label %yes, label %no, !prof ![[C1:[0-9]+]]
; CHECK-LABEL: no:
; CHECK-NOT: !prof
; CHECK-LABEL: no1:
; CHECK-NOT: !prof
; CHECK-LABEL: no2:
; CHECK-NOT: !prof
; CHECK-LABEL: yes:
; CHECK: br i1 %t3, label %yes1, label %yes2, !prof ![[C1]]
; CHECK-NOT: !prof
; CHECK: ![[C1]] = !{!"branch_weights", i32 6, i32 0}
;--- example.ll
define void @f1(i32 %cond) !guid !0 {
entry:
call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 0)
%t = icmp eq i32 %cond, 1
br i1 %t, label %yes, label %no
no:
%t2 = icmp eq i32 %cond, 2
br i1 %t2, label %no1, label %no2
no1:
unreachable
no2:
call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 1)
unreachable
yes:
%t3 = icmp eq i32 %cond, 3
br i1 %t3, label %yes1, label %yes2
yes1:
br label %exit
yes2:
call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 2)
%t4 = icmp eq i32 %cond, 4
br i1 %t4, label %yes3, label %yes4
yes3:
br label %exit
yes4:
call void @llvm.instrprof.increment(ptr @f1, i64 42, i32 42, i32 3)
unreachable
exit:
ret void
}
!0 = !{i64 1234}
;--- profile.yaml
- Guid: 1234
Counters: [6,0,0,0]