aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/ARM/vector-DAGCombine.ll
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2011-10-18 17:34:47 +0000
committerBob Wilson <bob.wilson@apple.com>2011-10-18 17:34:47 +0000
commitdb2b18febaea04d01b3dcb24fc44d5be7bd27a00 (patch)
treea0c97b10dc98fcc7d0cfed673c0d3fb733d10886 /test/CodeGen/ARM/vector-DAGCombine.ll
parent630243a8c2d40df137b64246b7ed4363962fd9b4 (diff)
Fix a DAG combiner assertion failure when constant folding BUILD_VECTORS.
svn r139159 caused SelectionDAG::getConstant() to promote BUILD_VECTOR operands with illegal types, even before type legalization. For this testcase, that led to one BUILD_VECTOR with i16 operands and another with promoted i32 operands, which triggered the assertion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142370 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/ARM/vector-DAGCombine.ll')
-rw-r--r--test/CodeGen/ARM/vector-DAGCombine.ll10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/vector-DAGCombine.ll b/test/CodeGen/ARM/vector-DAGCombine.ll
index 81bdc44863..1a97982eb0 100644
--- a/test/CodeGen/ARM/vector-DAGCombine.ll
+++ b/test/CodeGen/ARM/vector-DAGCombine.ll
@@ -123,3 +123,13 @@ define void @orVec(<3 x i8>* %A) nounwind {
ret void
}
+; The following test was hitting an assertion in the DAG combiner when
+; constant folding the multiply because the "sext undef" was translated to
+; a BUILD_VECTOR with i32 0 operands, which did not match the i16 operands
+; of the other BUILD_VECTOR.
+define i16 @foldBuildVectors() {
+ %1 = sext <8 x i8> undef to <8 x i16>
+ %2 = mul <8 x i16> %1, <i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
+ %3 = extractelement <8 x i16> %2, i32 0
+ ret i16 %3
+}