[llvm-branch-commits] [llvm] f557f80 - Revert "[GVN] Remove the "private" `llvm::gvn` namespace (NFC) (#210323)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Jul 20 02:06:53 PDT 2026


Author: Momchil Velikov
Date: 2026-07-20T10:06:49+01:00
New Revision: f557f80e7bce7cf223ea621e40bf2307cd8eb0e9

URL: https://github.com/llvm/llvm-project/commit/f557f80e7bce7cf223ea621e40bf2307cd8eb0e9
DIFF: https://github.com/llvm/llvm-project/commit/f557f80e7bce7cf223ea621e40bf2307cd8eb0e9.diff

LOG: Revert "[GVN] Remove the "private" `llvm::gvn` namespace (NFC) (#210323)"

This reverts commit b8300a76659d65fd9738de1c1e4bf5b71e9ef72b.

Added: 
    

Modified: 
    llvm/include/llvm/Transforms/Scalar/GVN.h
    llvm/lib/Transforms/Scalar/GVN.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Transforms/Scalar/GVN.h b/llvm/include/llvm/Transforms/Scalar/GVN.h
index 8b70d61fd9f3f..9142defb34de2 100644
--- a/llvm/include/llvm/Transforms/Scalar/GVN.h
+++ b/llvm/include/llvm/Transforms/Scalar/GVN.h
@@ -61,6 +61,15 @@ class PHINode;
 class TargetLibraryInfo;
 class Value;
 class IntrinsicInst;
+/// A private "module" namespace for types and utilities used by GVN. These
+/// are implementation details and should not be used by clients.
+namespace LLVM_LIBRARY_VISIBILITY_NAMESPACE gvn {
+
+struct AvailableValue;
+struct AvailableValueInBlock;
+class GVNLegacyPass;
+
+} // end namespace gvn
 
 /// A set of parameters to control various transforms performed by GVN pass.
 //  Each of the optional boolean parameters can be set to:
@@ -124,8 +133,6 @@ class GVNPass : public OptionalPassInfoMixin<GVNPass> {
 
 public:
   struct Expression;
-  struct AvailableValue;
-  struct AvailableValueInBlock;
 
   GVNPass(GVNOptions Options = {}) : Options(Options) {}
 
@@ -241,7 +248,7 @@ class GVNPass : public OptionalPassInfoMixin<GVNPass> {
   };
 
 private:
-  friend class GVNLegacyPass;
+  friend class gvn::GVNLegacyPass;
   friend struct DenseMapInfo<Expression>;
 
   MemoryDependenceResults *MD = nullptr;
@@ -347,7 +354,7 @@ class GVNPass : public OptionalPassInfoMixin<GVNPass> {
   bool InvalidBlockRPONumbers = true;
 
   using LoadDepVect = SmallVector<NonLocalDepResult, 64>;
-  using AvailValInBlkVect = SmallVector<AvailableValueInBlock, 64>;
+  using AvailValInBlkVect = SmallVector<gvn::AvailableValueInBlock, 64>;
   using UnavailBlkVect = SmallVector<BasicBlock *, 64>;
 
   bool runImpl(Function &F, AssumptionCache &RunAC, DominatorTree &RunDT,
@@ -447,7 +454,7 @@ class GVNPass : public OptionalPassInfoMixin<GVNPass> {
 
   /// Given a local dependency (Def or Clobber) determine if a value is
   /// available for the load.
-  std::optional<AvailableValue>
+  std::optional<gvn::AvailableValue>
   AnalyzeLoadAvailability(LoadInst *Load, const ReachingMemVal &Dep,
                           Value *Address);
 
@@ -455,7 +462,7 @@ class GVNPass : public OptionalPassInfoMixin<GVNPass> {
   /// \p TrueAddr and \p FalseAddr guarded by \p Cond), determine whether a
   /// value is available by finding dominating values for both addresses.  If
   /// so, the load can be rematerialized as a select of those two values.
-  std::optional<AvailableValue>
+  std::optional<gvn::AvailableValue>
   AnalyzeSelectAvailability(LoadInst *Load, Value *Cond, Value *TrueAddr,
                             Value *FalseAddr, Instruction *From);
 

diff  --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
index 25f51aeb314cb..0f33f340149f8 100644
--- a/llvm/lib/Transforms/Scalar/GVN.cpp
+++ b/llvm/lib/Transforms/Scalar/GVN.cpp
@@ -81,12 +81,10 @@
 #include <utility>
 
 using namespace llvm;
+using namespace llvm::gvn;
 using namespace llvm::VNCoercion;
 using namespace PatternMatch;
 
-using AvailableValue = GVNPass::AvailableValue;
-using AvailableValueInBlock = GVNPass::AvailableValueInBlock;
-
 #define DEBUG_TYPE "gvn"
 
 STATISTIC(NumGVNInstr, "Number of instructions deleted");
@@ -195,7 +193,7 @@ template <> struct llvm::DenseMapInfo<GVNPass::Expression> {
 /// Materialization of an AvailableValue never fails.  An AvailableValue is
 /// implicitly associated with a rematerialization point which is the
 /// location of the instruction from which it was formed.
-struct llvm::GVNPass::AvailableValue {
+struct llvm::gvn::AvailableValue {
   enum class ValType {
     SimpleVal, // A simple offsetted value that is accessed.
     LoadVal,   // A value produced by a load.
@@ -291,7 +289,7 @@ struct llvm::GVNPass::AvailableValue {
 
 /// Represents an AvailableValue which can be rematerialized at the end of
 /// the associated BasicBlock.
-struct llvm::GVNPass::AvailableValueInBlock {
+struct llvm::gvn::AvailableValueInBlock {
   /// BB - The basic block in question.
   BasicBlock *BB = nullptr;
 
@@ -3998,7 +3996,7 @@ void GVNPass::assignValNumForDeadCode() {
   }
 }
 
-class llvm::GVNLegacyPass : public FunctionPass {
+class llvm::gvn::GVNLegacyPass : public FunctionPass {
 public:
   static char ID; // Pass identification, replacement for typeid.
 


        


More information about the llvm-branch-commits mailing list