Changes in directory llvm/lib/CodeGen/SelectionDAG:
SelectionDAGISel.cpp updated: 1.217 -> 1.218 --- Log message: Make a vector live across blocks have the correct Vec type. This fixes CodeGen/X86/2006-04-04-CrossBlockCrash.ll --- Diffs of the changes: (+9 -1) SelectionDAGISel.cpp | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletion(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.217 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.218 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.217 Sat Apr 1 21:41:14 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Wed Apr 5 01:54:42 2006 @@ -648,7 +648,8 @@ // Otherwise, if this is a vector, make it available as a generic vector // here. MVT::ValueType PTyElementVT, PTyLegalElementVT; - unsigned NE = TLI.getPackedTypeBreakdown(cast<PackedType>(VTy),PTyElementVT, + const PackedType *PTy = cast<PackedType>(VTy); + unsigned NE = TLI.getPackedTypeBreakdown(PTy, PTyElementVT, PTyLegalElementVT); // Build a VBUILD_VECTOR with the input registers. @@ -684,6 +685,13 @@ Ops.push_back(DAG.getConstant(NE, MVT::i32)); Ops.push_back(DAG.getValueType(PTyLegalElementVT)); N = DAG.getNode(ISD::VBUILD_VECTOR, MVT::Vector, Ops); + + // Finally, use a VBIT_CONVERT to make this available as the appropriate + // vector type. + N = DAG.getNode(ISD::VBIT_CONVERT, MVT::Vector, N, + DAG.getConstant(PTy->getNumElements(), + MVT::i32), + DAG.getValueType(TLI.getValueType(PTy->getElementType()))); } return N; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits