mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-27 22:26:31 +00:00
Return undef value (instead of arbitrary) for wrong or undef index in
ConstantVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139007 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4c6b8bee2a
commit
8370d91f1e
@ -763,12 +763,12 @@ Constant *llvm::ConstantFoldExtractElementInstruction(Constant *Val,
|
||||
if (ConstantInt *CIdx = dyn_cast<ConstantInt>(Idx)) {
|
||||
uint64_t Index = CIdx->getZExtValue();
|
||||
if (Index >= CVal->getNumOperands())
|
||||
// ee({w,x,y,z}, wrong_value) -> w (an arbitrary value).
|
||||
return CVal->getOperand(0);
|
||||
// ee({w,x,y,z}, wrong_value) -> undef
|
||||
return UndefValue::get(cast<VectorType>(Val->getType())->getElementType());
|
||||
return CVal->getOperand(CIdx->getZExtValue());
|
||||
} else if (isa<UndefValue>(Idx)) {
|
||||
// ee({w,x,y,z}, undef) -> w (an arbitrary value).
|
||||
return CVal->getOperand(0);
|
||||
// ee({w,x,y,z}, undef) -> undef
|
||||
return UndefValue::get(cast<VectorType>(Val->getType())->getElementType());
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user