diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 3b3e2a1ae3f..5d8cb1cd291 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -3479,6 +3479,8 @@ SDValue LowerVECTOR_SHUFFLEv8i16(SDValue V1, SDValue V2, if (InOrder[i]) continue; SDValue Elt = MaskElts[i]; + if (Elt.getOpcode() == ISD::UNDEF) + continue; unsigned EltIdx = cast(Elt)->getValue(); SDValue ExtOp = (EltIdx < 8) ? DAG.getNode(ISD::EXTRACT_VECTOR_ELT, MVT::i16, V1,