From f3ee444010a3fe11f1e631a10a6db4bde290b415 Mon Sep 17 00:00:00 2001 From: Artur Pilipenko Date: Wed, 14 Dec 2016 11:55:47 +0000 Subject: [PATCH] Add a couple of assertions to the load combine code introduced by r289538 llvm-svn: 289646 --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 20a6477..394a363 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 -- 2.7.4