Fix a bug about generating undef operand when optimising shuffle vector and insert element in instruction combine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198730 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Hao Liu
2014-01-08 03:06:15 +00:00
parent 476136e951
commit 9e0fd27ce7
2 changed files with 20 additions and 2 deletions
@@ -763,9 +763,10 @@ InstCombiner::EvaluateInDifferentElementOrder(Value *V, ArrayRef<int> Mask) {
}
}
// If element is not in Mask, no need to handle the operand 1 (element to
// be inserted). Just evaluate values in operand 0 according to Mask.
if (!Found)
return UndefValue::get(
VectorType::get(V->getType()->getScalarType(), Mask.size()));
return EvaluateInDifferentElementOrder(I->getOperand(0), Mask);
Value *V = EvaluateInDifferentElementOrder(I->getOperand(0), Mask);
return InsertElementInst::Create(V, I->getOperand(1),