[llvm] b8e3e07 - [InstCombine] Export logic for common base pointer (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 12 06:33:54 PDT 2025
Author: Nikita Popov
Date: 2025-06-12T15:33:45+02:00
New Revision: b8e3e0749fb62a9845f8790f858e11f2558f94a2
URL: https://github.com/llvm/llvm-project/commit/b8e3e0749fb62a9845f8790f858e11f2558f94a2
DIFF: https://github.com/llvm/llvm-project/commit/b8e3e0749fb62a9845f8790f858e11f2558f94a2.diff
LOG: [InstCombine] Export logic for common base pointer (NFC)
Make this available to other parts of InstCombine, to be used for
pointer comparison optimization.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
llvm/lib/Transforms/InstCombine/InstCombineInternal.h
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
index f0f709bb16d8a..86d318967403d 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
@@ -2068,21 +2068,8 @@ Instruction *InstCombinerImpl::visitFAdd(BinaryOperator &I) {
return nullptr;
}
-struct CommonBase {
- /// Common base pointer.
- Value *Ptr = nullptr;
- /// LHS GEPs until common base.
- SmallVector<GEPOperator *> LHSGEPs;
- /// RHS GEPs until common base.
- SmallVector<GEPOperator *> RHSGEPs;
- /// LHS GEP NoWrapFlags until common base.
- GEPNoWrapFlags LHSNW = GEPNoWrapFlags::all();
- /// RHS GEP NoWrapFlags until common base.
- GEPNoWrapFlags RHSNW = GEPNoWrapFlags::all();
-};
-
-static CommonBase computeCommonBase(Value *LHS, Value *RHS) {
- CommonBase Base;
+CommonPointerBase CommonPointerBase::compute(Value *LHS, Value *RHS) {
+ CommonPointerBase Base;
if (LHS->getType() != RHS->getType())
return Base;
@@ -2136,7 +2123,7 @@ static CommonBase computeCommonBase(Value *LHS, Value *RHS) {
/// operands to the ptrtoint instructions for the LHS/RHS of the subtract.
Value *InstCombinerImpl::OptimizePointerDifference(Value *LHS, Value *RHS,
Type *Ty, bool IsNUW) {
- CommonBase Base = computeCommonBase(LHS, RHS);
+ CommonPointerBase Base = CommonPointerBase::compute(LHS, RHS);
if (!Base.Ptr)
return nullptr;
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
index 334462d715f95..bf7689bbfde70 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
@@ -862,6 +862,21 @@ class Negator final {
InstCombinerImpl &IC);
};
+struct CommonPointerBase {
+ /// Common base pointer.
+ Value *Ptr = nullptr;
+ /// LHS GEPs until common base.
+ SmallVector<GEPOperator *> LHSGEPs;
+ /// RHS GEPs until common base.
+ SmallVector<GEPOperator *> RHSGEPs;
+ /// LHS GEP NoWrapFlags until common base.
+ GEPNoWrapFlags LHSNW = GEPNoWrapFlags::all();
+ /// RHS GEP NoWrapFlags until common base.
+ GEPNoWrapFlags RHSNW = GEPNoWrapFlags::all();
+
+ static CommonPointerBase compute(Value *LHS, Value *RHS);
+};
+
} // end namespace llvm
#undef DEBUG_TYPE
More information about the llvm-commits
mailing list