diff options
| author | Dan Gohman <gohman@apple.com> | 2007-10-31 21:36:31 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2007-10-31 21:36:31 +0000 |
| commit | b43e020cdb9378d5f509b77881a02e8d7decd5ab (patch) | |
| tree | c2c775b6571a739b8b38db445445cd87d315bfad /llvm/lib | |
| parent | 9396c3950188bb622091f3e520eb9737d85f251f (diff) | |
| download | bcm5719-llvm-b43e020cdb9378d5f509b77881a02e8d7decd5ab.tar.gz bcm5719-llvm-b43e020cdb9378d5f509b77881a02e8d7decd5ab.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.
llvm-svn: 43579
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/ConstantFold.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/VMCore/ConstantFold.cpp b/llvm/lib/VMCore/ConstantFold.cpp index 2f2c6181290..257e4813d1d 100644 --- a/llvm/lib/VMCore/ConstantFold.cpp +++ b/llvm/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); + } } } |

