aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2012-01-17 04:44:50 +0000
committerCraig Topper <craig.topper@gmail.com>2012-01-17 04:44:50 +0000
commit37c2677fbcff1187106c579abfbd498aac739c2a (patch)
tree65225777b255e9522992789818b6b1d895e56215
parentfdebc38523b397743973ff6a2d2e93b112dd96e5 (diff)
downloadexternal_llvm-37c2677fbcff1187106c579abfbd498aac739c2a.zip
external_llvm-37c2677fbcff1187106c579abfbd498aac739c2a.tar.gz
external_llvm-37c2677fbcff1187106c579abfbd498aac739c2a.tar.bz2
Fix a crasher when PerformShiftCombine receives a BUILD_VECTOR of all UNDEF. Probably could use better handling in DAG combine or getNode. Fixes PR11772.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148285 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86ISelLowering.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index b5198c8..a0fd431 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -13430,6 +13430,11 @@ static SDValue PerformShiftCombine(SDNode* N, SelectionDAG &DAG,
BaseShAmt = Arg;
break;
}
+ // Handle the case where the build_vector is all undef
+ // FIXME: Should DAG allow this?
+ if (i == NumElts)
+ return SDValue();
+
for (; i != NumElts; ++i) {
SDValue Arg = ShAmtOp.getOperand(i);
if (Arg.getOpcode() == ISD::UNDEF) continue;