Make the InsertBefore argument to FindInsertedValue optional, so you can find an inserted value without modifying the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52319 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Matthijs Kooijman
2008-06-16 13:28:31 +00:00
parent 0a7413dad8
commit 9772891219
2 changed files with 12 additions and 4 deletions
+8 -3
View File
@@ -805,6 +805,7 @@ Value *BuildSubAggregate(Value *From, Value* To, const Type *IndexedType,
// Any inserted instructions are inserted before InsertBefore
Value *BuildSubAggregate(Value *From, const unsigned *idx_begin,
const unsigned *idx_end, Instruction *InsertBefore) {
assert(InsertBefore && "Must have someplace to insert!");
const Type *IndexedType = ExtractValueInst::getIndexedType(From->getType(),
idx_begin,
idx_end);
@@ -851,9 +852,13 @@ Value *llvm::FindInsertedValue(Value *V, const unsigned *idx_begin,
for (const unsigned *i = I->idx_begin(), *e = I->idx_end();
i != e; ++i, ++req_idx) {
if (req_idx == idx_end)
// The requested index is a part of a nested aggregate. Handle this
// specially.
return BuildSubAggregate(V, idx_begin, req_idx, InsertBefore);
if (InsertBefore)
// The requested index is a part of a nested aggregate. Handle this
// specially.
return BuildSubAggregate(V, idx_begin, req_idx, InsertBefore);
else
// We can't handle this without inserting insertvalues
return 0;
// This insert value inserts something else than what we are looking for.
// See if the (aggregrate) value inserted into has the value we are