[llvm] NaryReassociate: Check pattern before user scan (PR #134587)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 7 00:48:19 PDT 2025
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/134587
None
>From 17691879325dd0db118e0a82243432d368bee1ab Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Mon, 7 Apr 2025 14:44:13 +0700
Subject: [PATCH] NaryReassociate: Check pattern before user scan
---
llvm/lib/Transforms/Scalar/NaryReassociate.cpp | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
index 3b3f32a0ea591..ec17443b37143 100644
--- a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
+++ b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
@@ -611,15 +611,15 @@ Value *NaryReassociatePass::tryReassociateMinOrMax(Instruction *I,
Value *A = nullptr, *B = nullptr;
MaxMinT m_MaxMin(m_Value(A), m_Value(B));
+ if (!match(LHS, m_MaxMin))
+ return nullptr;
+
if (LHS->hasNUsesOrMore(3) ||
// The optimization is profitable only if LHS can be removed in the end.
// In other words LHS should be used (directly or indirectly) by I only.
- llvm::any_of(LHS->users(),
- [&](auto *U) {
- return U != I &&
- !(U->hasOneUser() && *U->users().begin() == I);
- }) ||
- !match(LHS, m_MaxMin))
+ llvm::any_of(LHS->users(), [&](auto *U) {
+ return U != I && !(U->hasOneUser() && *U->users().begin() == I);
+ }))
return nullptr;
auto tryCombination = [&](Value *A, const SCEV *AExpr, Value *B,
More information about the llvm-commits
mailing list