
There's an early-exit case for regalloc when we don't even get a chance to ask for an advisor (priority or eviction), and switch the context. Then, when we want to log the reward for that function (==the one with the early exit case), we hit the error case where the function's name doesn't match the last-seen context. There are a few possible fixes, one would be to just switch context when output-ing the reward, which would be correct. This patch opts for the alternative where we check any loging happened in the first place - just to re-validate that no function would have been regaloc-ed without first log-ing its reward. Differential Revision: https://reviews.llvm.org/D143359
34 lines
849 B
LLVM
34 lines
849 B
LLVM
; REQUIRES: have_tflite
|
|
; REQUIRES: x86_64-linux
|
|
;
|
|
; Check that we can log more than 1 function.
|
|
;
|
|
; RUN: llc -mtriple=x86_64-linux-unknown -regalloc=greedy -regalloc-enable-advisor=development \
|
|
; RUN: -regalloc-training-log=%t1 < %s
|
|
; RUN: FileCheck --input-file %t1 %s
|
|
|
|
; RUN: llc -mtriple=x86_64-linux-unknown -regalloc=greedy -regalloc-enable-priority-advisor=development \
|
|
; RUN: -regalloc-priority-training-log=%t2 < %s
|
|
; RUN: FileCheck --input-file %t2 %s
|
|
|
|
declare void @f();
|
|
|
|
define void @f1(i64 %lhs, i64 %rhs, i64* %addr) {
|
|
ret void
|
|
}
|
|
|
|
define void @f2(i64 %lhs, i64 %rhs, i64* %addr) {
|
|
%sum = add i64 %lhs, %rhs
|
|
call void @f();
|
|
store i64 %sum, i64* %addr
|
|
ret void
|
|
}
|
|
|
|
define void @f3(i64 %lhs, i64 %rhs, i64* %addr) {
|
|
ret void
|
|
}
|
|
|
|
; CHECK-NOT: {"context":"f1"}
|
|
; CHECK: {"context":"f2"}
|
|
; CHECK-NOT: {"context":"f3"}
|