aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-07-26 20:38:49 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-07-26 20:38:49 +0000
commit24f05334e60bd2b2b614d5eb72ee6c92ad0a9bc8 (patch)
treed478ed319dd5ba9ed98a9f74dedb1830d770015b
parentbe9a9afee58a1d62f528c6b30bf835c95e2b8bab (diff)
downloadexternal_llvm-24f05334e60bd2b2b614d5eb72ee6c92ad0a9bc8.zip
external_llvm-24f05334e60bd2b2b614d5eb72ee6c92ad0a9bc8.tar.gz
external_llvm-24f05334e60bd2b2b614d5eb72ee6c92ad0a9bc8.tar.bz2
Add obvious missing case to switch. PR10497.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136130 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp3
-rw-r--r--test/CodeGen/X86/split-vector-bitcast.ll12
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp b/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
index c8454bf..8747d27 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
@@ -524,12 +524,11 @@ void DAGTypeLegalizer::SplitVecRes_BITCAST(SDNode *N, SDValue &Lo,
// Handle some special cases efficiently.
switch (getTypeAction(InVT)) {
- default:
- assert(false && "Unknown type action!");
case TargetLowering::TypeLegal:
case TargetLowering::TypePromoteInteger:
case TargetLowering::TypeSoftenFloat:
case TargetLowering::TypeScalarizeVector:
+ case TargetLowering::TypeWidenVector:
break;
case TargetLowering::TypeExpandInteger:
case TargetLowering::TypeExpandFloat:
diff --git a/test/CodeGen/X86/split-vector-bitcast.ll b/test/CodeGen/X86/split-vector-bitcast.ll
new file mode 100644
index 0000000..55ba07d
--- /dev/null
+++ b/test/CodeGen/X86/split-vector-bitcast.ll
@@ -0,0 +1,12 @@
+; RUN: llc < %s -march=x86 -mattr=-sse2,+sse | grep addps
+
+; PR10497
+; (This is primarily checking that this construct doesn't crash.)
+define void @a(<2 x float>* %a, <2 x i32>* %b) {
+ %cc = load <2 x float>* %a
+ %c = fadd <2 x float> %cc, %cc
+ %dd = bitcast <2 x float> %c to <2 x i32>
+ %d = add <2 x i32> %dd, %dd
+ store <2 x i32> %d, <2 x i32>* %b
+ ret void
+}