[PATCH] D154885: [DAGCombiner] Limit graph traversal to cap compile times
Pranav Kant via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 25 10:31:55 PDT 2023
pranavk updated this revision to Diff 544031.
pranavk added a comment.
clang-format and reviewer suggestions
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D154885/new/
https://reviews.llvm.org/D154885
Files:
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Index: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
===================================================================
--- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -17671,6 +17671,7 @@
// can be folded with this one. We should do this to avoid having to keep
// a copy of the original base pointer.
SmallVector<SDNode *, 16> OtherUses;
+ constexpr unsigned int MaxSteps = 8192;
if (isa<ConstantSDNode>(Offset))
for (SDNode::use_iterator UI = BasePtr->use_begin(),
UE = BasePtr->use_end();
@@ -17681,7 +17682,8 @@
if (Use.getUser() == Ptr.getNode() || Use != BasePtr)
continue;
- if (SDNode::hasPredecessorHelper(Use.getUser(), Visited, Worklist))
+ if (SDNode::hasPredecessorHelper(Use.getUser(), Visited, Worklist,
+ MaxSteps))
continue;
if (Use.getUser()->getOpcode() != ISD::ADD &&
@@ -17714,7 +17716,7 @@
for (SDNode *Use : Ptr->uses()) {
if (Use == N)
continue;
- if (SDNode::hasPredecessorHelper(Use, Visited, Worklist))
+ if (SDNode::hasPredecessorHelper(Use, Visited, Worklist, MaxSteps))
return false;
// If Ptr may be folded in addressing mode of other use, then it's
@@ -17888,12 +17890,13 @@
// Check for #2.
SmallPtrSet<const SDNode *, 32> Visited;
SmallVector<const SDNode *, 8> Worklist;
+ constexpr unsigned int MaxSteps = 8192;
// Ptr is predecessor to both N and Op.
Visited.insert(Ptr.getNode());
Worklist.push_back(N);
Worklist.push_back(Op);
- if (!SDNode::hasPredecessorHelper(N, Visited, Worklist) &&
- !SDNode::hasPredecessorHelper(Op, Visited, Worklist))
+ if (!SDNode::hasPredecessorHelper(N, Visited, Worklist, MaxSteps) &&
+ !SDNode::hasPredecessorHelper(Op, Visited, Worklist, MaxSteps))
return Op;
}
return nullptr;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154885.544031.patch
Type: text/x-patch
Size: 1945 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230725/609d1619/attachment.bin>
More information about the llvm-commits
mailing list