[llvm] [llvm-extract] support unnamed bbs. (PR #135140)
Allin Lee via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 10 19:57:14 PDT 2025
https://github.com/AllinLeeYL updated https://github.com/llvm/llvm-project/pull/135140
>From f35ab5a61f89a9da74d1fa2ad8b8fc467527aac8 Mon Sep 17 00:00:00 2001
From: Yilin Li <allinleeme at gmail.com>
Date: Thu, 10 Apr 2025 13:48:02 +0800
Subject: [PATCH] [llvm-extract] support unnamed bbs.
---
llvm/include/llvm/IR/Value.h | 2 --
llvm/lib/IR/Value.cpp | 2 --
llvm/tools/llvm-extract/llvm-extract.cpp | 7 +++++--
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/llvm/include/llvm/IR/Value.h b/llvm/include/llvm/IR/Value.h
index cfed12e2f5f8d..bf1de7eef9932 100644
--- a/llvm/include/llvm/IR/Value.h
+++ b/llvm/include/llvm/IR/Value.h
@@ -290,9 +290,7 @@ class Value {
/// \note It is an error to call V->takeName(V).
void takeName(Value *V);
-#ifndef NDEBUG
std::string getNameOrAsOperand() const;
-#endif
/// Change all uses of this to point to a new Value.
///
diff --git a/llvm/lib/IR/Value.cpp b/llvm/lib/IR/Value.cpp
index 6c52ced5f73b2..494c77b0a4115 100644
--- a/llvm/lib/IR/Value.cpp
+++ b/llvm/lib/IR/Value.cpp
@@ -440,7 +440,6 @@ void Value::takeName(Value *V) {
ST->reinsertValue(this);
}
-#ifndef NDEBUG
std::string Value::getNameOrAsOperand() const {
if (!getName().empty())
return std::string(getName());
@@ -450,7 +449,6 @@ std::string Value::getNameOrAsOperand() const {
printAsOperand(OS, false);
return OS.str();
}
-#endif
void Value::assertModuleIsMaterializedImpl() const {
#ifndef NDEBUG
diff --git a/llvm/tools/llvm-extract/llvm-extract.cpp b/llvm/tools/llvm-extract/llvm-extract.cpp
index 648060acb392c..69636ca018dcb 100644
--- a/llvm/tools/llvm-extract/llvm-extract.cpp
+++ b/llvm/tools/llvm-extract/llvm-extract.cpp
@@ -90,10 +90,13 @@ static cl::list<std::string> ExtractBlocks(
"Each pair will create a function.\n"
"If multiple basic blocks are specified in one pair,\n"
"the first block in the sequence should dominate the rest.\n"
+ "If an unnamed basic block is to be extracted,\n"
+ "'%' should be added before the basic block variable names.\n"
"eg:\n"
" --bb=f:bb1;bb2 will extract one function with both bb1 and bb2;\n"
" --bb=f:bb1 --bb=f:bb2 will extract two functions, one with bb1, one "
- "with bb2."),
+ "with bb2.\n"
+ " --bb=f:%1 will extract one function with basic block 1;"),
cl::value_desc("function:bb1[;bb2...]"), cl::cat(ExtractCat));
// ExtractAlias - The alias to extract from the module.
@@ -356,7 +359,7 @@ int main(int argc, char **argv) {
// The function has been materialized, so add its matching basic blocks
// to the block extractor list, or fail if a name is not found.
auto Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
- return BB.getName() == BBName;
+ return BB.getNameOrAsOperand() == BBName;
});
if (Res == P.first->end()) {
errs() << argv[0] << ": function " << P.first->getName()
More information about the llvm-commits
mailing list