diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 20a6477e210..394a363d6b8 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -4561,7 +4561,10 @@ SDValue DAGCombiner::MatchLoadCombine(SDNode *N) { return SDValue(); // Calculate the offset of the current byte from the base address - unsigned LoadByteWidth = L->getMemoryVT().getSizeInBits() / 8; + unsigned LoadBitWidth = L->getMemoryVT().getSizeInBits(); + assert(LoadBitWidth % 8 == 0 && + "can only analyze providers for individual bytes not bit"); + unsigned LoadByteWidth = LoadBitWidth / 8; int64_t MemoryByteOffset = DAG.getDataLayout().isBigEndian() ? BigEndianByteAt(LoadByteWidth, Bytes[i].ByteOffset) @@ -4576,6 +4579,7 @@ SDValue DAGCombiner::MatchLoadCombine(SDNode *N) { Loads.insert(L); } assert(Base && "must be set"); + assert(Loads.size() > 0 && "must be at least one load"); // Check if the bytes of the OR we are looking at match with either big or // little endian value load |

