Skip to content

Commit 418121c

Browse files
tarindujmtrofin
authored andcommitted
Reapply "Rename InlineFeatureAnalysis to FunctionPropertiesAnalysis"
(This reverts commit a5e0194, and corrects author). Rename the pass to be able to extend it to function properties other than inliner features. Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D82044
1 parent 274b6b0 commit 418121c

File tree

8 files changed

+30
-27
lines changed

8 files changed

+30
-27
lines changed

llvm/include/llvm/Analysis/InlineFeaturesAnalysis.h renamed to llvm/include/llvm/Analysis/FunctionPropertiesAnalysis.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
//===- InlineFeaturesAnalysis.h - ML Policy Feature extraction -*- C++ -*-===//
1+
//=- FunctionPropertiesAnalysis.h - Function Properties extraction -*- C++ -=//
22
//
33
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44
// See https://llvm.org/LICENSE.txt for license information.
55
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#ifndef LLVM_INLINEFEATURESANALYSIS_H_
10-
#define LLVM_INLINEFEATURESANALYSIS_H_
9+
#ifndef LLVM_FUNCTIONPROPERTIESANALYSIS_H_
10+
#define LLVM_FUNCTIONPROPERTIESANALYSIS_H_
1111

1212
#include "llvm/IR/PassManager.h"
1313

1414
namespace llvm {
1515
class Function;
1616

17-
class InlineFeaturesAnalysis
18-
: public AnalysisInfoMixin<InlineFeaturesAnalysis> {
17+
class FunctionPropertiesAnalysis
18+
: public AnalysisInfoMixin<FunctionPropertiesAnalysis> {
1919
public:
2020
static AnalysisKey Key;
2121
struct Result {
@@ -42,4 +42,4 @@ class InlineFeaturesAnalysis
4242
};
4343

4444
} // namespace llvm
45-
#endif // LLVM_INLINEFEATURESANALYSIS_H_
45+
#endif // LLVM_FUNCTIONPROPERTIESANALYSIS_H_

llvm/lib/Analysis/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ add_llvm_component_library(LLVMAnalysis
4949
DomTreeUpdater.cpp
5050
DominanceFrontier.cpp
5151
EHPersonalities.cpp
52+
FunctionPropertiesAnalysis.cpp
5253
GlobalsModRef.cpp
5354
GuardUtils.cpp
5455
HeatUtils.cpp
@@ -57,7 +58,6 @@ add_llvm_component_library(LLVMAnalysis
5758
IndirectCallPromotionAnalysis.cpp
5859
InlineCost.cpp
5960
InlineAdvisor.cpp
60-
InlineFeaturesAnalysis.cpp
6161
InlineSizeEstimatorAnalysis.cpp
6262
InstCount.cpp
6363
InstructionPrecedenceTracking.cpp

llvm/lib/Analysis/InlineFeaturesAnalysis.cpp renamed to llvm/lib/Analysis/FunctionPropertiesAnalysis.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===- InlineFeaturesAnalysis.cpp - Feature extraction for ML Policies ----===//
1+
//===- FunctionPropertiesAnalysis.cpp - Function properties extraction ----===//
22
//
33
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44
// See https://llvm.org/LICENSE.txt for license information.
@@ -11,15 +11,16 @@
1111
//
1212
//===----------------------------------------------------------------------===//
1313

14-
#include "llvm/Analysis/InlineFeaturesAnalysis.h"
14+
#include "llvm/Analysis/FunctionPropertiesAnalysis.h"
1515
#include "llvm/IR/Instructions.h"
1616

1717
using namespace llvm;
1818

19-
AnalysisKey InlineFeaturesAnalysis::Key;
19+
AnalysisKey FunctionPropertiesAnalysis::Key;
2020

21-
InlineFeaturesAnalysis::Result
22-
InlineFeaturesAnalysis::run(const Function &F, FunctionAnalysisManager &FAM) {
21+
FunctionPropertiesAnalysis::Result
22+
FunctionPropertiesAnalysis::run(const Function &F,
23+
FunctionAnalysisManager &FAM) {
2324
Result Ret;
2425
Ret.Uses = ((!F.hasLocalLinkage()) ? 1 : 0) + F.getNumUses();
2526
for (const auto &BB : F) {

llvm/lib/Analysis/MLInlineAdvisor.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
#include "llvm/ADT/SCCIterator.h"
2222
#include "llvm/Analysis/CallGraph.h"
23+
#include "llvm/Analysis/FunctionPropertiesAnalysis.h"
2324
#include "llvm/Analysis/InlineCost.h"
24-
#include "llvm/Analysis/InlineFeaturesAnalysis.h"
2525
#include "llvm/Analysis/MLInlineAdvisor.h"
2626
#include "llvm/Analysis/MLModelRunner.h"
2727
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
@@ -118,7 +118,8 @@ void MLInlineAdvisor::onPassEntry() {
118118
}
119119

120120
int64_t MLInlineAdvisor::getLocalCalls(Function &F) {
121-
return FAM.getResult<InlineFeaturesAnalysis>(F).DirectCallsToDefinedFunctions;
121+
return FAM.getResult<FunctionPropertiesAnalysis>(F)
122+
.DirectCallsToDefinedFunctions;
122123
}
123124

124125
// Update the internal state of the advisor, and force invalidate feature
@@ -133,7 +134,7 @@ void MLInlineAdvisor::onSuccessfulInlining(const MLInlineAdvice &Advice,
133134
Function *Callee = Advice.getCallee();
134135

135136
// The caller features aren't valid anymore.
136-
FAM.invalidate<InlineFeaturesAnalysis>(*Caller);
137+
FAM.invalidate<FunctionPropertiesAnalysis>(*Caller);
137138
int64_t IRSizeAfter =
138139
getIRSize(*Caller) + (CalleeWasDeleted ? 0 : Advice.CalleeIRSize);
139140
CurrentIRSize += IRSizeAfter - (Advice.CallerIRSize + Advice.CalleeIRSize);
@@ -146,14 +147,15 @@ void MLInlineAdvisor::onSuccessfulInlining(const MLInlineAdvice &Advice,
146147
// For edges, we 'forget' the edges that the caller and callee used to have
147148
// before inlining, and add back what they currently have together.
148149
int64_t NewCallerAndCalleeEdges =
149-
FAM.getResult<InlineFeaturesAnalysis>(*Caller)
150+
FAM.getResult<FunctionPropertiesAnalysis>(*Caller)
150151
.DirectCallsToDefinedFunctions;
151152

152153
if (CalleeWasDeleted)
153154
--NodeCount;
154155
else
155-
NewCallerAndCalleeEdges += FAM.getResult<InlineFeaturesAnalysis>(*Callee)
156-
.DirectCallsToDefinedFunctions;
156+
NewCallerAndCalleeEdges +=
157+
FAM.getResult<FunctionPropertiesAnalysis>(*Callee)
158+
.DirectCallsToDefinedFunctions;
157159
EdgeCount += (NewCallerAndCalleeEdges - Advice.CallerAndCalleeEdges);
158160
assert(CurrentIRSize >= 0 && EdgeCount >= 0 && NodeCount >= 0);
159161
}
@@ -224,8 +226,8 @@ std::unique_ptr<InlineAdvice> MLInlineAdvisor::getAdvice(CallBase &CB) {
224226
NrCtantParams += (isa<Constant>(*I));
225227
}
226228

227-
auto &CallerBefore = FAM.getResult<InlineFeaturesAnalysis>(Caller);
228-
auto &CalleeBefore = FAM.getResult<InlineFeaturesAnalysis>(Callee);
229+
auto &CallerBefore = FAM.getResult<FunctionPropertiesAnalysis>(Caller);
230+
auto &CalleeBefore = FAM.getResult<FunctionPropertiesAnalysis>(Callee);
229231

230232
ModelRunner->setFeature(FeatureIndex::CalleeBasicBlockCount,
231233
CalleeBefore.BasicBlockCount);

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@
3131
#include "llvm/Analysis/DemandedBits.h"
3232
#include "llvm/Analysis/DependenceAnalysis.h"
3333
#include "llvm/Analysis/DominanceFrontier.h"
34+
#include "llvm/Analysis/FunctionPropertiesAnalysis.h"
3435
#include "llvm/Analysis/GlobalsModRef.h"
3536
#include "llvm/Analysis/IVUsers.h"
3637
#include "llvm/Analysis/InlineAdvisor.h"
37-
#include "llvm/Analysis/InlineFeaturesAnalysis.h"
3838
#include "llvm/Analysis/InlineSizeEstimatorAnalysis.h"
3939
#include "llvm/Analysis/LazyCallGraph.h"
4040
#include "llvm/Analysis/LazyValueInfo.h"

llvm/lib/Passes/PassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ FUNCTION_ANALYSIS("domfrontier", DominanceFrontierAnalysis())
132132
FUNCTION_ANALYSIS("loops", LoopAnalysis())
133133
FUNCTION_ANALYSIS("lazy-value-info", LazyValueAnalysis())
134134
FUNCTION_ANALYSIS("da", DependenceAnalysis())
135-
FUNCTION_ANALYSIS("inliner-features", InlineFeaturesAnalysis())
135+
FUNCTION_ANALYSIS("func-properties", FunctionPropertiesAnalysis())
136136
FUNCTION_ANALYSIS("inliner-size-estimator", InlineSizeEstimatorAnalysis())
137137
FUNCTION_ANALYSIS("memdep", MemoryDependenceAnalysis())
138138
FUNCTION_ANALYSIS("memoryssa", MemorySSAAnalysis())

llvm/unittests/Analysis/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ add_llvm_unittest_with_input_files(AnalysisTests
2727
DivergenceAnalysisTest.cpp
2828
DomTreeUpdaterTest.cpp
2929
GlobalsModRefTest.cpp
30-
InlineFeaturesAnalysisTest.cpp
30+
FunctionPropertiesAnalysisTest.cpp
3131
IVDescriptorsTest.cpp
3232
LazyCallGraphTest.cpp
3333
LoadsTest.cpp

llvm/unittests/Analysis/InlineFeaturesAnalysisTest.cpp renamed to llvm/unittests/Analysis/FunctionPropertiesAnalysisTest.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
//===- InlineFeaturesAnalysisTest.cpp - inline features unit tests --------===//
1+
//===- FunctionPropertiesAnalysisTest.cpp - function properties unit tests-===//
22
//
33
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44
// See https://llvm.org/LICENSE.txt for license information.
55
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#include "llvm/Analysis/InlineFeaturesAnalysis.h"
9+
#include "llvm/Analysis/FunctionPropertiesAnalysis.h"
1010
#include "llvm/AsmParser/Parser.h"
1111
#include "llvm/IR/Instructions.h"
1212
#include "llvm/IR/LLVMContext.h"
@@ -24,7 +24,7 @@ static std::unique_ptr<Module> parseIR(LLVMContext &C, const char *IR) {
2424
return Mod;
2525
}
2626

27-
TEST(InlineFeaturesTest, BasicTest) {
27+
TEST(FunctionPropertiesTest, BasicTest) {
2828
LLVMContext C;
2929
std::unique_ptr<Module> M = parseIR(C,
3030
R"IR(
@@ -59,7 +59,7 @@ define internal i32 @top() {
5959
)IR");
6060

6161
FunctionAnalysisManager FAM;
62-
InlineFeaturesAnalysis FA;
62+
FunctionPropertiesAnalysis FA;
6363

6464
auto BranchesFeatures = FA.run(*M->getFunction("branches"), FAM);
6565
EXPECT_EQ(BranchesFeatures.BasicBlockCount, 4);

0 commit comments

Comments
 (0)