summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-12-09 23:54:42 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-12-09 23:54:42 +0000
commiteffab8fa2413e96b6a2ce2bbeefe35fe478ee028 (patch)
treef6564d99241a92a034944563d834e18508b19c6e /lib
parent21d7fb814adcedc7b2f156e003d2083ad1d8ac6a (diff)
downloadllvm-effab8fa2413e96b6a2ce2bbeefe35fe478ee028.tar.gz
llvm-effab8fa2413e96b6a2ce2bbeefe35fe478ee028.tar.bz2
llvm-effab8fa2413e96b6a2ce2bbeefe35fe478ee028.tar.xz
Splats can contain undef's; make sure to handle them correctly. PR11526.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146299 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/ARM/ARMISelLowering.cpp3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp
index f09a1c7e4f..2045073fb6 100644
--- a/lib/Target/ARM/ARMISelLowering.cpp
+++ b/lib/Target/ARM/ARMISelLowering.cpp
@@ -3984,8 +3984,7 @@ SDValue ARMTargetLowering::LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG,
// Use vmov.f32 to materialize other v2f32 and v4f32 splats.
if (VT == MVT::v2f32 || VT == MVT::v4f32) {
- ConstantFPSDNode *C = cast<ConstantFPSDNode>(Op.getOperand(0));
- int ImmVal = ARM_AM::getFP32Imm(C->getValueAPF());
+ int ImmVal = ARM_AM::getFP32Imm(SplatBits);
if (ImmVal != -1) {
SDValue Val = DAG.getTargetConstant(ImmVal, MVT::i32);
return DAG.getNode(ARMISD::VMOVFPIMM, dl, VT, Val);