Significantly improve handling of vectors that are live across basic blocks,
handling cases where the vector elements need promotion, expansion, and when
the vector type itself needs to be decimated.

llvm-svn: 27278
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index a2c423f..dda5cfe 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -1162,8 +1162,7 @@
     break;
   case ISD::BIT_CONVERT:
     // Basic sanity checking.
-    assert((Operand.getValueType() == MVT::Vector ||   // FIXME: This is a hack.
-           MVT::getSizeInBits(VT) == MVT::getSizeInBits(Operand.getValueType()))
+    assert(MVT::getSizeInBits(VT) == MVT::getSizeInBits(Operand.getValueType())
            && "Cannot BIT_CONVERT between two different types!");
     if (VT == Operand.getValueType()) return Operand;  // noop conversion.
     if (OpOpcode == ISD::BIT_CONVERT)  // bitconv(bitconv(x)) -> bitconv(x)