diff options
| author | Reid Kleckner <rnk@google.com> | 2018-09-14 19:39:40 +0000 | 
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2018-09-14 19:39:40 +0000 | 
| commit | 4d1b75c6b7643450d681bc2629d1b0fd9db0eb0b (patch) | |
| tree | c8073df74ff26936139cb7ed6621fb91c707f3fe /llvm/lib/CodeGen | |
| parent | 16f58d18506bf3c0bf89cf24e3fea88d5a8154dc (diff) | |
| download | bcm5719-llvm-4d1b75c6b7643450d681bc2629d1b0fd9db0eb0b.tar.gz bcm5719-llvm-4d1b75c6b7643450d681bc2629d1b0fd9db0eb0b.zip  | |
Revert r342183 "[DAGCombine] Fix crash when store merging created an extract_subvector with invalid index."
Causes 'isVector() && "Invalid vector type!"' assertion when building
Skia in Chrome.
llvm-svn: 342265
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 9 | 
1 files changed, 1 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 71048b14683..20e749ba569 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -13843,24 +13843,17 @@ bool DAGCombiner::MergeStoresOfConstantsOrVecElts(               Val.getOpcode() == ISD::EXTRACT_SUBVECTOR)) {            SDValue Vec = Val.getOperand(0);            EVT MemVTScalarTy = MemVT.getScalarType(); -          SDValue Idx = Val.getOperand(1);            // We may need to add a bitcast here to get types to line up.            if (MemVTScalarTy != Vec.getValueType()) {              unsigned Elts = Vec.getValueType().getSizeInBits() /                              MemVTScalarTy.getSizeInBits(); -            if (Val.getValueType().isVector()) { -              unsigned IdxC = cast<ConstantSDNode>(Idx)->getZExtValue(); -              unsigned NewIdx = -                  ((uint64_t)IdxC * MemVT.getVectorNumElements()) / Elts; -              Idx = DAG.getConstant(NewIdx, SDLoc(Val), Idx.getValueType()); -            }              EVT NewVecTy =                  EVT::getVectorVT(*DAG.getContext(), MemVTScalarTy, Elts);              Vec = DAG.getBitcast(NewVecTy, Vec);            }            auto OpC = (MemVT.isVector()) ? ISD::EXTRACT_SUBVECTOR                                          : ISD::EXTRACT_VECTOR_ELT; -          Val = DAG.getNode(OpC, SDLoc(Val), MemVT, Vec, Idx); +          Val = DAG.getNode(OpC, SDLoc(Val), MemVT, Vec, Val.getOperand(1));          }          Ops.push_back(Val);        }  | 

