diff options
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index dfafb70585..6acadc1349 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<SDOperand> Ops; for(std::map<SDOperand,std::vector<unsigned> >::iterator I=Values.begin(), E = Values.end(); I != E; ++I) { |