From 46f939c1183560064effc6b838ffdc397df265ac Mon Sep 17 00:00:00 2001 From: Nirav Dave Date: Fri, 22 Feb 2019 16:20:34 +0000 Subject: Disable big-endian constant store merges from rL354676. llvm-svn: 354677 --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp') diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index cbaa13c55f5..c118dfffed2 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -15450,16 +15450,17 @@ SDValue DAGCombiner::visitSTORE(SDNode *N) { if (auto *C = dyn_cast(Value)) { APInt Val = C1->getAPIntValue(); APInt InsertVal = C->getAPIntValue().zextOrTrunc(STByteSize * 8); - if (DAG.getDataLayout().isBigEndian()) - Offset = ChainByteSize - 1 - Offset; - Val.insertBits(InsertVal, Offset * 8); - SDValue NewSDVal = - DAG.getConstant(Val, SDLoc(C), ChainValue.getValueType(), - C1->isTargetOpcode(), C1->isOpaque()); - SDNode *NewST1 = DAG.UpdateNodeOperands( - ST1, ST1->getChain(), NewSDVal, ST1->getOperand(2), - ST1->getOperand(3)); - return CombineTo(ST, SDValue(NewST1, 0)); + // FIXME: Handle Big-endian mode. + if (!DAG.getDataLayout().isBigEndian()) { + Val.insertBits(InsertVal, Offset * 8); + SDValue NewSDVal = + DAG.getConstant(Val, SDLoc(C), ChainValue.getValueType(), + C1->isTargetOpcode(), C1->isOpaque()); + SDNode *NewST1 = DAG.UpdateNodeOperands( + ST1, ST1->getChain(), NewSDVal, ST1->getOperand(2), + ST1->getOperand(3)); + return CombineTo(ST, SDValue(NewST1, 0)); + } } } } // End ST subset of ST1 case. -- cgit v1.2.3