Skip to content

Conversation

@Steelskin
Copy link
Contributor

@Steelskin Steelskin commented Nov 25, 2025

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 #109483.

@llvmbot
Copy link
Member

llvmbot commented Nov 25, 2025

@llvm/pr-subscribers-llvm-transforms

Author: Fabrice de Gans (Steelskin)

Changes

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 #109483.


Full diff: https://github.com/llvm/llvm-project/pull/169564.diff

3 Files Affected:

  • (modified) llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h (+5-1)
  • (modified) llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp (+4)
  • (modified) llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp (-3)
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,

@github-actions
Copy link

github-actions bot commented Nov 25, 2025

✅ 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.
@Steelskin Steelskin force-pushed the fabrice/upstream-export-eliminate-duplicate-phi-nodes branch from cb76892 to 71e98ff Compare November 25, 2025 20:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants