[PATCH] D131026: stop llvm-reduce's ReduceBasicBlocks delta pass from creating invalid IR
John Regehr via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 2 21:23:39 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG1116fa476504: avoid a bug where we remove a BB and then the next one becomes the (authored by regehr).
Changed prior to commit:
https://reviews.llvm.org/D131026?vs=449513&id=449528#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131026/new/
https://reviews.llvm.org/D131026
Files:
llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
Index: llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
===================================================================
--- llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
+++ llvm/tools/llvm-reduce/deltas/ReduceBasicBlocks.cpp
@@ -102,6 +102,19 @@
}
}
+/// A BB is ok to remove if it's not the entry block, or else it is
+/// the entry block but the next block in the function has just one
+/// predecessor -- this property is required because that block is
+/// going to become the new entry block
+static bool okToRemove(BasicBlock &BB) {
+ if (!BB.isEntryBlock())
+ return true;
+ auto F = BB.getParent();
+ auto it = F->begin();
+ ++it;
+ return (it == F->end()) || (*it).hasNPredecessors(1);
+}
+
/// Removes out-of-chunk arguments from functions, and modifies their calls
/// accordingly. It also removes allocations of out-of-chunk arguments.
static void extractBasicBlocksFromModule(Oracle &O, Module &Program) {
@@ -110,7 +123,7 @@
SmallVector<BasicBlock *> BBsToDelete;
for (auto &F : Program) {
for (auto &BB : F) {
- if (O.shouldKeep())
+ if (!okToRemove(BB) || O.shouldKeep())
BBsToKeep.insert(&BB);
else {
BBsToDelete.push_back(&BB);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131026.449528.patch
Type: text/x-patch
Size: 1225 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220803/c36326c4/attachment.bin>
More information about the llvm-commits
mailing list