X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FSelectionDAG%2FSelectionDAG.cpp;h=758f112f78c6e83e4318b50f7c67da32ed994792;hb=ee4c619b3b28a42078fc8033e5dccd42fc6edd42;hp=7c70cd4d72d563888d5ea25a5bc1eb5d401c2c82;hpb=4401361a2fb92c82317dbfbb1616f54ced2b51f3;p=oota-llvm.git diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 7c70cd4d72d..758f112f78c 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -797,10 +797,14 @@ void SelectionDAG::VerifyNode(SDNode *N) { assert(N->getValueType(0).isVector() && "Wrong BUILD_VECTOR return type!"); assert(N->getNumOperands() == N->getValueType(0).getVectorNumElements() && "Wrong number of BUILD_VECTOR operands!"); - MVT EltVT = N->getValueType(0).getVectorElementType(); - for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I) - assert(I->getSDValue().getValueType() == EltVT && - "Wrong BUILD_VECTOR operand type!"); + // FIXME: Change vector_shuffle to a variadic node with mask elements being + // operands of the node. Currently the mask is a BUILD_VECTOR passed as an + // operand, and it is not always possible to legalize it. Turning off the + // following checks at least makes it possible to legalize most of the time. +// MVT EltVT = N->getValueType(0).getVectorElementType(); +// for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I) +// assert(I->getSDValue().getValueType() == EltVT && +// "Wrong BUILD_VECTOR operand type!"); break; } }