IR: Fix ConstantArray::replaceUsesOfWithOnConstant()

Previously, `ConstantArray::replaceUsesOfWithOnConstant()` neglected to
check whether it becomes a `ConstantDataArray`.  Call
`ConstantArray::getImpl()` to check for that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215965 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith
2014-08-19 02:21:00 +00:00
parent 6238162cc5
commit 3b666f3b59
2 changed files with 31 additions and 0 deletions

View File

@@ -2701,6 +2701,12 @@ void ConstantArray::replaceUsesOfWithOnConstant(Value *From, Value *To,
return;
}
// Check for any other type of constant-folding.
if (Constant *C = getImpl(getType(), Values)) {
replaceUsesOfWithOnConstantImpl(C);
return;
}
// Check to see if we have this array type already.
LLVMContextImpl::ArrayConstantsTy::LookupKey Lookup(
cast<ArrayType>(getType()), makeArrayRef(Values));