[llvm] llvm-extract now supports unnamed basic blocks. (PR #112850)
Allin Lee via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 18 01:05:51 PDT 2024
https://github.com/AllinLeeYL updated https://github.com/llvm/llvm-project/pull/112850
>From 26c5d93dc949aac9074020f29f564c27abc1564f Mon Sep 17 00:00:00 2001
From: Allin Lee <allinleeme at gmail.com>
Date: Fri, 18 Oct 2024 15:40:51 +0800
Subject: [PATCH 1/2] llvm-extract now supports unnamed basic blocks.
---
llvm/tools/llvm-extract/llvm-extract.cpp | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/llvm/tools/llvm-extract/llvm-extract.cpp b/llvm/tools/llvm-extract/llvm-extract.cpp
index 5fc9a31ab4ad7c..73123a699dd82f 100644
--- a/llvm/tools/llvm-extract/llvm-extract.cpp
+++ b/llvm/tools/llvm-extract/llvm-extract.cpp
@@ -355,9 +355,23 @@ int main(int argc, char **argv) {
for (StringRef BBName : P.second) {
// The function has been materialized, so add its matching basic blocks
// to the block extractor list, or fail if a name is not found.
+#ifndef NDEBUG
+ auto Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
+ return BB.getNameOrAsOperand() == BBName;
+ });
+#else
auto Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
return BB.getName() == BBName;
});
+ if (Res == P.first->end() && std::isdigit(BBName)) {
+ Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
+ std::string tmpName;
+ raw_string_ostream OS(tmpName);
+ BB.printAsOperand(OS, false);
+ return OS.str() == BBName;
+ });
+ }
+#endif
if (Res == P.first->end()) {
errs() << argv[0] << ": function " << P.first->getName()
<< " doesn't contain a basic block named '" << BBName
>From 06a656e207635d99e0719c87bbf928ed9f7c769a Mon Sep 17 00:00:00 2001
From: Allin Lee <allinleeme at gmail.com>
Date: Fri, 18 Oct 2024 16:04:41 +0800
Subject: [PATCH 2/2] llvm-extract supports unnamed basic blocks.
---
llvm/tools/llvm-extract/llvm-extract.cpp | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/llvm/tools/llvm-extract/llvm-extract.cpp b/llvm/tools/llvm-extract/llvm-extract.cpp
index 73123a699dd82f..d28796af3e34d4 100644
--- a/llvm/tools/llvm-extract/llvm-extract.cpp
+++ b/llvm/tools/llvm-extract/llvm-extract.cpp
@@ -359,17 +359,19 @@ int main(int argc, char **argv) {
auto Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
return BB.getNameOrAsOperand() == BBName;
});
-#else
- auto Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
- return BB.getName() == BBName;
- });
- if (Res == P.first->end() && std::isdigit(BBName)) {
+#else
+ llvm::Function::iterator Res;
+ if (BBName.substr(0, 1) == "%") {
Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
std::string tmpName;
raw_string_ostream OS(tmpName);
BB.printAsOperand(OS, false);
return OS.str() == BBName;
});
+ } else {
+ Res = llvm::find_if(*P.first, [&](const BasicBlock &BB) {
+ return BB.getName() == BBName;
+ });
}
#endif
if (Res == P.first->end()) {
More information about the llvm-commits
mailing list