[mlgo][regalloc] Handle training case when no regalloc happens.
authorMircea Trofin <mtrofin@google.com>
Mon, 6 Feb 2023 01:16:46 +0000 (17:16 -0800)
committerMircea Trofin <mtrofin@google.com>
Mon, 6 Feb 2023 21:57:16 +0000 (13:57 -0800)
commit1b80ccba0f9bb86eabeeb0c32876eae2088eafb8
treea01369b8253d6aae0d9342925637e1cdb0b5b16b
parentcb5e48d1c2c4774ed9f17ff89412f1291b640172
[mlgo][regalloc] Handle training case when no regalloc happens.

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
llvm/include/llvm/Analysis/Utils/TrainingLogger.h
llvm/lib/CodeGen/MLRegallocEvictAdvisor.cpp
llvm/lib/CodeGen/MLRegallocPriorityAdvisor.cpp
llvm/test/CodeGen/MLRegalloc/empty-log.ll [new file with mode: 0644]