Fix a DAGCombiner abort on a bitcast from a scalar to a vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43470 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2007-10-29 20:44:42 +00:00
parent a8cc4d3d3c
commit 090b38a0da
2 changed files with 12 additions and 1 deletions

View File

@ -4212,7 +4212,8 @@ SDOperand DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) {
unsigned NumElts = MVT::getVectorNumElements(VT);
if (InVec.getOpcode() == ISD::BIT_CONVERT) {
MVT::ValueType BCVT = InVec.getOperand(0).getValueType();
if (NumElts != MVT::getVectorNumElements(BCVT))
if (!MVT::isVector(BCVT) ||
NumElts != MVT::getVectorNumElements(BCVT))
return SDOperand();
InVec = InVec.getOperand(0);
EVT = MVT::getVectorElementType(BCVT);

View File

@ -0,0 +1,10 @@
; RUN: llvm-as < %s | llc -march=x86
define i1 @foo(i64 %a)
{
%t = bitcast i64 %a to <2 x float>
%r = extractelement <2 x float> %t, i32 0
%s = extractelement <2 x float> %t, i32 1
%b = fcmp uno float %r, %s
ret i1 %b
}