Skip to content

Conversation

@Dalmurii
Copy link
Contributor

No description provided.

dalmurii added 2 commits November 15, 2025 16:08
static init fiasco

 Changes to be committed:
	modified:   llvm/include/llvm/Analysis/InlineModelFeatureMaps.h
	modified:   llvm/lib/Analysis/MLInlineAdvisor.cpp
 Changes to be committed:
	modified:   llvm/lib/Analysis/MLInlineAdvisor.cpp
@llvmbot llvmbot added mlgo llvm:analysis Includes value tracking, cost tables and constant folding labels Nov 15, 2025
@llvmbot
Copy link
Member

llvmbot commented Nov 15, 2025

@llvm/pr-subscribers-llvm-analysis

Author: dalmurii (Dalmurii)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/168178.diff

2 Files Affected:

  • (modified) llvm/include/llvm/Analysis/InlineModelFeatureMaps.h (+2-2)
  • (modified) llvm/lib/Analysis/MLInlineAdvisor.cpp (+12-6)
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<int64_t>;
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<InteractiveModelRunner>(
-          M.getContext(), InputFeatures, InlineDecisionSpec,
+          M.getContext(), InputFeatures, getInlineDecisionSpec(),
           InteractiveChannelBaseName + ".out",
           InteractiveChannelBaseName + ".in");
     }
@@ -127,11 +127,17 @@ static std::vector<TensorSpec> FeatureMap{
 }
 
 const char *const llvm::DecisionName = "inlining_decision";
-const TensorSpec llvm::InlineDecisionSpec =
-    TensorSpec::createSpec<int64_t>(DecisionName, {1});
+const TensorSpec &llvm::getInlineDecisionSpec() {
+  static const TensorSpec T =
+      TensorSpec::createSpec<int64_t>(DecisionName, {1});
+  return T;
+}
 const char *const llvm::DefaultDecisionName = "inlining_default";
-const TensorSpec llvm::DefaultDecisionSpec =
-    TensorSpec::createSpec<int64_t>(DefaultDecisionName, {1});
+const TensorSpec &llvm::getDefaultDecisionSpec() {
+  static const TensorSpec T =
+      TensorSpec::createSpec<int64_t>(DefaultDecisionName, {1});
+  return T;
+}
 const char *const llvm::RewardName = "delta_size";
 
 CallBase *getInlinableCS(Instruction &I) {
@@ -209,7 +215,7 @@ MLInlineAdvisor::MLInlineAdvisor(
         TensorSpec::createSpec<float>("caller_embedding", {IR2VecDim}));
   }
   if (InteractiveIncludeDefault)
-    FeatureMap.push_back(DefaultDecisionSpec);
+    FeatureMap.push_back(getDefaultDecisionSpec());
 
   ModelRunner = GetModelRunner(getFeatureMap());
   if (!ModelRunner) {

@llvmbot
Copy link
Member

llvmbot commented Nov 15, 2025

@llvm/pr-subscribers-mlgo

Author: dalmurii (Dalmurii)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/168178.diff

2 Files Affected:

  • (modified) llvm/include/llvm/Analysis/InlineModelFeatureMaps.h (+2-2)
  • (modified) llvm/lib/Analysis/MLInlineAdvisor.cpp (+12-6)
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<int64_t>;
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<InteractiveModelRunner>(
-          M.getContext(), InputFeatures, InlineDecisionSpec,
+          M.getContext(), InputFeatures, getInlineDecisionSpec(),
           InteractiveChannelBaseName + ".out",
           InteractiveChannelBaseName + ".in");
     }
@@ -127,11 +127,17 @@ static std::vector<TensorSpec> FeatureMap{
 }
 
 const char *const llvm::DecisionName = "inlining_decision";
-const TensorSpec llvm::InlineDecisionSpec =
-    TensorSpec::createSpec<int64_t>(DecisionName, {1});
+const TensorSpec &llvm::getInlineDecisionSpec() {
+  static const TensorSpec T =
+      TensorSpec::createSpec<int64_t>(DecisionName, {1});
+  return T;
+}
 const char *const llvm::DefaultDecisionName = "inlining_default";
-const TensorSpec llvm::DefaultDecisionSpec =
-    TensorSpec::createSpec<int64_t>(DefaultDecisionName, {1});
+const TensorSpec &llvm::getDefaultDecisionSpec() {
+  static const TensorSpec T =
+      TensorSpec::createSpec<int64_t>(DefaultDecisionName, {1});
+  return T;
+}
 const char *const llvm::RewardName = "delta_size";
 
 CallBase *getInlinableCS(Instruction &I) {
@@ -209,7 +215,7 @@ MLInlineAdvisor::MLInlineAdvisor(
         TensorSpec::createSpec<float>("caller_embedding", {IR2VecDim}));
   }
   if (InteractiveIncludeDefault)
-    FeatureMap.push_back(DefaultDecisionSpec);
+    FeatureMap.push_back(getDefaultDecisionSpec());
 
   ModelRunner = GetModelRunner(getFeatureMap());
   if (!ModelRunner) {

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llvm:analysis Includes value tracking, cost tables and constant folding mlgo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants