diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 01ca2884d038..f94f506156c2 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -14519,6 +14519,9 @@ bool DAGCombiner::findBetterNeighborChains(StoreSDNode* St) { if (Index != St && !SDValue(Index, 0)->hasOneUse()) break; + if (Index->isVolatile() || Index->isIndexed()) + break; + // Find the base pointer and offset for this memory node. BaseIndexOffset Ptr = BaseIndexOffset::match(Index->getBasePtr()); @@ -14526,9 +14529,6 @@ bool DAGCombiner::findBetterNeighborChains(StoreSDNode* St) { if (!Ptr.equalBaseIndex(BasePtr)) break; - if (Index->isVolatile() || Index->isIndexed()) - break; - // Find the next memory operand in the chain. If the next operand in the // chain is a store then move up and continue the scan with the next // memory operand. If the next operand is a load save it and use alias