diff options
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/fold-vector-shl-crash.ll | 9 |
2 files changed, 1 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 80a1b5b3be7..bc2e5f13d43 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -4275,7 +4275,7 @@ SDValue DAGCombiner::visitSHL(SDNode *N) { if (isNullConstant(N0)) return N0; // fold (shl x, c >= size(x)) -> undef - if (N1C && N1C->getAPIntValue().uge(OpSizeInBits)) + if (N1C && N1C->getZExtValue() >= OpSizeInBits) return DAG.getUNDEF(VT); // fold (shl x, 0) -> x if (N1C && N1C->isNullValue()) diff --git a/llvm/test/CodeGen/X86/fold-vector-shl-crash.ll b/llvm/test/CodeGen/X86/fold-vector-shl-crash.ll deleted file mode 100644 index 9f81e44074f..00000000000 --- a/llvm/test/CodeGen/X86/fold-vector-shl-crash.ll +++ /dev/null @@ -1,9 +0,0 @@ -; RUN: llc < %s -march=x86-64 | FileCheck %s -; RUN: llc < %s -march=x86 | FileCheck %s - -;CHECK-LABEL: test -define <2 x i256> @test() { - %S = shufflevector <2 x i256> zeroinitializer, <2 x i256> <i256 -1, i256 -1>, <2 x i32> <i32 0, i32 2> - %B = shl <2 x i256> %S, <i256 -1, i256 -1> ; DAG Combiner crashes here - ret <2 x i256> %B -} |