diff options
author | Nirav Dave <niravd@google.com> | 2018-09-25 15:29:04 +0000 |
---|---|---|
committer | Nirav Dave <niravd@google.com> | 2018-09-25 15:29:04 +0000 |
commit | 7373d5e6468c53197b3ad71190fb079bf09b446c (patch) | |
tree | 8235377b1f45726471d248147fb605a4751eca94 | |
parent | 345fae5d56b621eda63e60b0f5c838fa51e4d08e (diff) | |
download | bcm5719-llvm-7373d5e6468c53197b3ad71190fb079bf09b446c.tar.gz bcm5719-llvm-7373d5e6468c53197b3ad71190fb079bf09b446c.zip |
[DAGCombine] Share predecessor bookkeeping in CombineToPostIndexedLoadStore. NFCI.
llvm-svn: 342983
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index c5409c8298a..95bd7f74293 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -12701,8 +12701,15 @@ bool DAGCombiner::CombineToPostIndexedLoadStore(SDNode *N) { if (TryNext) continue; - // Check for #2 - if (!Op->isPredecessorOf(N) && !N->isPredecessorOf(Op)) { + // Check for #2. + SmallPtrSet<const SDNode *, 32> Visited; + SmallVector<const SDNode *, 8> Worklist; + // 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)) { SDValue Result = isLoad ? DAG.getIndexedLoad(SDValue(N,0), SDLoc(N), BasePtr, Offset, AM) |