From: Artur Pilipenko Date: Mon, 27 Feb 2017 11:40:14 +0000 (+0000) Subject: [DAGCombine] NFC. MatchLoadCombine remember the first byte provider, not the load... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0003ac947f6a803c33bbc9568cc7d52c78d7876c;p=llvm [DAGCombine] NFC. MatchLoadCombine remember the first byte provider, not the load node This refactoring will simplify the upcoming change to fix a bug in folding patterns with non-zero offsets on BE targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296331 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 39aa8233594..34be7766b57 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -4520,7 +4520,7 @@ SDValue DAGCombiner::MatchLoadCombine(SDNode *N) { SDValue Chain; SmallSet Loads; - LoadSDNode *FirstLoad = nullptr; + Optional FirstByteProvider; int64_t FirstOffset = INT64_MAX; bool IsBigEndianTarget = DAG.getDataLayout().isBigEndian(); @@ -4565,7 +4565,7 @@ SDValue DAGCombiner::MatchLoadCombine(SDNode *N) { // Remember the first byte load if (ByteOffsetFromBase < FirstOffset) { - FirstLoad = L; + FirstByteProvider = P; FirstOffset = ByteOffsetFromBase; } @@ -4587,7 +4587,9 @@ SDValue DAGCombiner::MatchLoadCombine(SDNode *N) { return SDValue(); } assert((BigEndian != LittleEndian) && "should be either or"); - assert(FirstLoad && "must be set"); + assert(FirstByteProvider && "must be set"); + + LoadSDNode *FirstLoad = FirstByteProvider->Load; // The node we are looking at matches with the pattern, check if we can // replace it with a single load and bswap if needed.