diff options
author | Dan Gohman <djg@cray.com> | 2007-10-31 21:36:31 +0000 |
---|---|---|
committer | Dan Gohman <djg@cray.com> | 2007-10-31 21:36:31 +0000 |
commit | d1844ddf53417088bb3a07fb020d5d3fd1438548 (patch) | |
tree | 421d13ee95f59c98dccf32c51d68e7d0de636a9f /lib/VMCore/ConstantFold.cpp | |
parent | ca7187ac3e79baab0cdc3b00e08078afba02c177 (diff) | |
download | external_llvm-d1844ddf53417088bb3a07fb020d5d3fd1438548.tar.gz external_llvm-d1844ddf53417088bb3a07fb020d5d3fd1438548.tar.bz2 external_llvm-d1844ddf53417088bb3a07fb020d5d3fd1438548.zip |
Fix a regression in test/CodeGen/X86/2007-04-24-VectorCrash.ll introduced
by r43510. Gracefully handle constants with vector type that aren't
ConstantVector or ConstantAggregateZero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43579 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/ConstantFold.cpp')
-rw-r--r-- | lib/VMCore/ConstantFold.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/VMCore/ConstantFold.cpp b/lib/VMCore/ConstantFold.cpp index 2f2c618129..257e4813d1 100644 --- a/lib/VMCore/ConstantFold.cpp +++ b/lib/VMCore/ConstantFold.cpp @@ -716,10 +716,8 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, } else if (const VectorType *VTy = dyn_cast<VectorType>(C1->getType())) { const ConstantVector *CP1 = dyn_cast<ConstantVector>(C1); const ConstantVector *CP2 = dyn_cast<ConstantVector>(C2); - assert((CP1 != NULL || isa<ConstantAggregateZero>(C1)) && - "Unexpected kind of vector constant!"); - assert((CP2 != NULL || isa<ConstantAggregateZero>(C2)) && - "Unexpected kind of vector constant!"); + if ((CP1 != NULL || isa<ConstantAggregateZero>(C1)) && + (CP2 != NULL || isa<ConstantAggregateZero>(C2))) { switch (Opcode) { default: break; @@ -747,6 +745,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, return EvalVectorOp(CP1, CP2, VTy, ConstantExpr::getOr); case Instruction::Xor: return EvalVectorOp(CP1, CP2, VTy, ConstantExpr::getXor); + } } } |