diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index dfafb70585f..6acadc1349d 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -3209,7 +3209,8 @@ SDOperand SelectionDAGLegalize::ExpandBUILD_VECTOR(SDNode *Node) { SDOperand ShuffleMask = DAG.getNode(ISD::BUILD_VECTOR, MaskVT, MaskVec); // If the target supports VECTOR_SHUFFLE and this shuffle mask, use it. - if (TLI.isShuffleLegal(Node->getValueType(0), ShuffleMask)) { + if (TLI.isShuffleLegal(Node->getValueType(0), ShuffleMask) && + TLI.isOperationLegal(ISD::SCALAR_TO_VECTOR, Node->getValueType(0))) { std::vector Ops; for(std::map >::iterator I=Values.begin(), E = Values.end(); I != E; ++I) {