diff --git a/llvm/include/llvm/Analysis/InlineModelFeatureMaps.h b/llvm/include/llvm/Analysis/InlineModelFeatureMaps.h index e559171b9c257..10b251b130703 100644 --- a/llvm/include/llvm/Analysis/InlineModelFeatureMaps.h +++ b/llvm/include/llvm/Analysis/InlineModelFeatureMaps.h @@ -161,9 +161,9 @@ inlineCostFeatureToMlFeature(InlineCostFeatureIndex Feature) { } LLVM_ABI extern const char *const DecisionName; -LLVM_ABI extern const TensorSpec InlineDecisionSpec; +LLVM_ABI const TensorSpec &getInlineDecisionSpec(); LLVM_ABI extern const char *const DefaultDecisionName; -LLVM_ABI extern const TensorSpec DefaultDecisionSpec; +LLVM_ABI extern const TensorSpec &getDefaultDecisionSpec(); LLVM_ABI extern const char *const RewardName; using InlineFeatures = std::vector; diff --git a/llvm/lib/Analysis/MLInlineAdvisor.cpp b/llvm/lib/Analysis/MLInlineAdvisor.cpp index 9a5ae2ae26799..a4449e7bff8ab 100644 --- a/llvm/lib/Analysis/MLInlineAdvisor.cpp +++ b/llvm/lib/Analysis/MLInlineAdvisor.cpp @@ -87,7 +87,7 @@ llvm::getReleaseModeAdvisor(Module &M, ModuleAnalysisManager &MAM, EmbeddedModelRunnerOptions().setModelSelector(ModelSelector)); else { AOTRunner = std::make_unique( - M.getContext(), InputFeatures, InlineDecisionSpec, + M.getContext(), InputFeatures, getInlineDecisionSpec(), InteractiveChannelBaseName + ".out", InteractiveChannelBaseName + ".in"); } @@ -127,11 +127,17 @@ static std::vector FeatureMap{ } const char *const llvm::DecisionName = "inlining_decision"; -const TensorSpec llvm::InlineDecisionSpec = - TensorSpec::createSpec(DecisionName, {1}); +const TensorSpec &llvm::getInlineDecisionSpec() { + static const TensorSpec T = + TensorSpec::createSpec(DecisionName, {1}); + return T; +} const char *const llvm::DefaultDecisionName = "inlining_default"; -const TensorSpec llvm::DefaultDecisionSpec = - TensorSpec::createSpec(DefaultDecisionName, {1}); +const TensorSpec &llvm::getDefaultDecisionSpec() { + static const TensorSpec T = + TensorSpec::createSpec(DefaultDecisionName, {1}); + return T; +} const char *const llvm::RewardName = "delta_size"; CallBase *getInlinableCS(Instruction &I) { @@ -209,7 +215,7 @@ MLInlineAdvisor::MLInlineAdvisor( TensorSpec::createSpec("caller_embedding", {IR2VecDim})); } if (InteractiveIncludeDefault) - FeatureMap.push_back(DefaultDecisionSpec); + FeatureMap.push_back(getDefaultDecisionSpec()); ModelRunner = GetModelRunner(getFeatureMap()); if (!ModelRunner) {