-
Notifications
You must be signed in to change notification settings - Fork 14.8k
[IR2Vec] Make IR2VecCategory externally visible and reuse in llvm-ir2vec cl options #153089
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
base: users/svkeerthy/08-11-_ir2vec_llvm-ir2vec_supporting_flow-aware_embeddings
Are you sure you want to change the base?
Conversation
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
@llvm/pr-subscribers-mlgo @llvm/pr-subscribers-llvm-analysis Author: S. VenkataKeerthy (svkeerthy) ChangesConsolidate IR2Vec option categories to use a single shared category across the library and tool. With this change the cl options defined in IR2Vec.cpp are visible in llvm-ir2vec tool. This is necessary as we use the same options in the tool. Full diff: https://github.com/llvm/llvm-project/pull/153089.diff 3 Files Affected:
diff --git a/llvm/include/llvm/Analysis/IR2Vec.h b/llvm/include/llvm/Analysis/IR2Vec.h
index 3cfc206c94788..7ace83ba1d053 100644
--- a/llvm/include/llvm/Analysis/IR2Vec.h
+++ b/llvm/include/llvm/Analysis/IR2Vec.h
@@ -63,6 +63,7 @@ enum class IR2VecKind { Symbolic, FlowAware };
namespace ir2vec {
+LLVM_EXTERNAL_VISIBILITY extern llvm::cl::OptionCategory IR2VecCategory;
LLVM_ABI extern cl::opt<float> OpcWeight;
LLVM_ABI extern cl::opt<float> TypeWeight;
LLVM_ABI extern cl::opt<float> ArgWeight;
diff --git a/llvm/lib/Analysis/IR2Vec.cpp b/llvm/lib/Analysis/IR2Vec.cpp
index 081a4d073b65f..e28938b64bfdb 100644
--- a/llvm/lib/Analysis/IR2Vec.cpp
+++ b/llvm/lib/Analysis/IR2Vec.cpp
@@ -36,7 +36,7 @@ STATISTIC(VocabMissCounter,
namespace llvm {
namespace ir2vec {
-static cl::OptionCategory IR2VecCategory("IR2Vec Options");
+LLVM_EXTERNAL_VISIBILITY cl::OptionCategory IR2VecCategory("IR2Vec Options");
// FIXME: Use a default vocab when not specified
static cl::opt<std::string>
diff --git a/llvm/tools/llvm-ir2vec/llvm-ir2vec.cpp b/llvm/tools/llvm-ir2vec/llvm-ir2vec.cpp
index 8f8b4e2f2bda8..c065aaeedd395 100644
--- a/llvm/tools/llvm-ir2vec/llvm-ir2vec.cpp
+++ b/llvm/tools/llvm-ir2vec/llvm-ir2vec.cpp
@@ -55,8 +55,6 @@
namespace llvm {
namespace ir2vec {
-static cl::OptionCategory IR2VecToolCategory("IR2Vec Tool Options");
-
// Subcommands
static cl::SubCommand
TripletsSubCmd("triplets", "Generate triplets for vocabulary training");
@@ -72,18 +70,18 @@ static cl::opt<std::string>
InputFilename(cl::Positional,
cl::desc("<input bitcode file or '-' for stdin>"),
cl::init("-"), cl::sub(TripletsSubCmd),
- cl::sub(EmbeddingsSubCmd), cl::cat(IR2VecToolCategory));
+ cl::sub(EmbeddingsSubCmd), cl::cat(ir2vec::IR2VecCategory));
static cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"),
cl::value_desc("filename"),
cl::init("-"),
- cl::cat(IR2VecToolCategory));
+ cl::cat(ir2vec::IR2VecCategory));
// Embedding-specific options
static cl::opt<std::string>
FunctionName("function", cl::desc("Process specific function only"),
cl::value_desc("name"), cl::Optional, cl::init(""),
- cl::sub(EmbeddingsSubCmd), cl::cat(IR2VecToolCategory));
+ cl::sub(EmbeddingsSubCmd), cl::cat(ir2vec::IR2VecCategory));
enum EmbeddingLevel {
InstructionLevel, // Generate instruction-level embeddings
@@ -100,7 +98,7 @@ static cl::opt<EmbeddingLevel>
clEnumValN(FunctionLevel, "func",
"Generate function-level embeddings")),
cl::init(FunctionLevel), cl::sub(EmbeddingsSubCmd),
- cl::cat(IR2VecToolCategory));
+ cl::cat(ir2vec::IR2VecCategory));
namespace {
@@ -325,7 +323,7 @@ int main(int argc, char **argv) {
using namespace llvm::ir2vec;
InitLLVM X(argc, argv);
- cl::HideUnrelatedOptions(IR2VecToolCategory);
+ cl::HideUnrelatedOptions(ir2vec::IR2VecCategory);
cl::ParseCommandLineOptions(
argc, argv,
"IR2Vec - Embedding Generation Tool\n"
|
@@ -36,7 +36,7 @@ STATISTIC(VocabMissCounter, | |||
|
|||
namespace llvm { | |||
namespace ir2vec { | |||
static cl::OptionCategory IR2VecCategory("IR2Vec Options"); | |||
LLVM_EXTERNAL_VISIBILITY cl::OptionCategory IR2VecCategory("IR2Vec Options"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You need LLVM_EXTERNAL_VISIBILITY
on the declaration and the definition?
be6f9a6
to
0310cb4
Compare
44c5895
to
de8480b
Compare
Consolidate IR2Vec option categories to use a single shared category across the library and tool.
With this change the cl options defined in IR2Vec.cpp are visible in llvm-ir2vec tool. This is necessary as we use the same options in the tool.