[CodeMetrics] use hasOneLiveUse instead of hasOneUse while analyzing inlinable callsites

It would be better for CodeMetrics to use hasOneLiveUse while analyzing
static and called once callsites, since inline cost now uses
hasOneLiveUse instead of hasOneUse to avoid overpessimization on dead
constant cases (since this patch https://reviews.llvm.org/D109294).

This change has no noticeable influence now, but it helps improve the
accuracy of cost models of passes that use CodeMetrics.

Reviewed By: fhahn, nikic

Differential Revision: https://reviews.llvm.org/D130461
This commit is contained in:
Sinan Lin 2022-07-26 13:45:13 +08:00 committed by Chuanqi Xu
parent 94c00c10e8
commit 7a2f5dca09
1 changed files with 2 additions and 1 deletions

View File

@ -133,7 +133,8 @@ void CodeMetrics::analyzeBasicBlock(
// When preparing for LTO, liberally consider calls as inline
// candidates.
if (!Call->isNoInline() && IsLoweredToCall &&
((F->hasInternalLinkage() && F->hasOneUse()) || PrepareForLTO)) {
((F->hasInternalLinkage() && F->hasOneLiveUse()) ||
PrepareForLTO)) {
++NumInlineCandidates;
}