-
Notifications
You must be signed in to change notification settings - Fork 15.5k
llvm: Export EliminateNewDuplicatePHINodes #169564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
llvm: Export EliminateNewDuplicatePHINodes #169564
Conversation
|
@llvm/pr-subscribers-llvm-transforms Author: Fabrice de Gans (Steelskin) ChangesThis is needed for tests, when building with This effort is tracked in #109483. Full diff: https://github.com/llvm/llvm-project/pull/169564.diff 3 Files Affected:
diff --git a/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h b/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
index a1a2cac76bde8..a489daa8035ee 100644
--- a/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
+++ b/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
@@ -14,12 +14,12 @@
#define LLVM_TRANSFORMS_UTILS_SSAUPDATERBULK_H
#include "llvm/ADT/StringRef.h"
+#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/PredIteratorCache.h"
#include "llvm/Support/Compiler.h"
namespace llvm {
-class BasicBlock;
class PHINode;
template <typename T> class SmallVectorImpl;
class Type;
@@ -84,6 +84,10 @@ class SSAUpdaterBulk {
LLVM_ABI_FOR_TEST void RewriteAndOptimizeAllUses(DominatorTree &DT);
};
+LLVM_ABI_FOR_TEST bool
+EliminateNewDuplicatePHINodes(BasicBlock *BB,
+ BasicBlock::phi_iterator FirstExistingPN);
+
} // end namespace llvm
#endif // LLVM_TRANSFORMS_UTILS_SSAUPDATERBULK_H
diff --git a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
index fb39fddde72e2..73c68f95b6ef7 100644
--- a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
+++ b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
@@ -267,6 +267,8 @@ static bool replaceIfIdentical(PHINode &PHI, PHINode &ReplPHI) {
return true;
}
+namespace llvm {
+
bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
BasicBlock::phi_iterator FirstExistingPN) {
assert(!PHIAreRefEachOther(make_range(BB->phis().begin(), FirstExistingPN)));
@@ -293,6 +295,8 @@ bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
return Changed;
}
+} // end namespace llvm
+
static void deduplicatePass(ArrayRef<PHINode *> Worklist) {
SmallDenseMap<BasicBlock *, unsigned> BBs;
for (PHINode *PHI : Worklist) {
diff --git a/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp b/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
index 13cfaf3a0345e..503d3a0f9bfa9 100644
--- a/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
+++ b/llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
@@ -374,9 +374,6 @@ TEST(SSAUpdaterBulk, SimplifyPHIs) {
EXPECT_EQ(Phi, Cmp->getOperand(1));
}
-bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
- BasicBlock::phi_iterator FirstExistingPN);
-
// Helper to run both versions on the same input.
static void RunEliminateNewDuplicatePHINode(
const char *AsmText,
|
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
This is needed for tests, when building with `LLVM_BUILD_LLVM_DYLIB` so LLVM can be built as a DLL on Windows. This effort is tracked in llvm#109483.
cb76892 to
71e98ff
Compare
vpykhtin
left a comment
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.
LGTM.
As the function gets global visibility we might want to move it closer to EliminateDuplicatePHINodes in llvm/lib/Transforms/Utils/Local.cpp, but it can be done later.
This is needed for tests, when building with
LLVM_BUILD_LLVM_DYLIBso LLVM can be built as a DLL on Windows.This effort is tracked in #109483.