From: Chris Lattner Date: Fri, 29 Mar 2002 05:49:37 +0000 (+0000) Subject: Add an insert method to VAlueHolder to allow batch insertion X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b04bb3f158f37d0a4dd9a32e5fc84f13cf3a282c;p=oota-llvm.git Add an insert method to VAlueHolder to allow batch insertion git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2038 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ValueHolder.h b/include/llvm/ValueHolder.h index b75d243a3d4..905b2ad326a 100644 --- a/include/llvm/ValueHolder.h +++ b/include/llvm/ValueHolder.h @@ -111,6 +111,16 @@ public: // value. // iterator insert(iterator Pos, ValueSubclass *Inst); + + // ValueHolder::insert - This method inserts the specified _range_ of values + // before the 'Pos' iterator. This currently only works for vector + // iterators... + // + // FIXME: This is not generic so that the code does not have to be around + // to be used... is this ok? + // + void insert(iterator Pos, // Where to insert + iterator First, iterator Last); // Vector to read insts from }; #endif diff --git a/lib/VMCore/ValueHolderImpl.h b/lib/VMCore/ValueHolderImpl.h index fff88fd53b9..411e2b44664 100644 --- a/lib/VMCore/ValueHolderImpl.h +++ b/lib/VMCore/ValueHolderImpl.h @@ -138,4 +138,34 @@ ValueHolder return I; } +// ValueHolder::insert - This method inserts the specified _range_ of values +// before the 'Pos' iterator, and returns an iterator to the first newly +// inserted element. This currently only works for vector iterators... +// +// FIXME: This is not generic so that the code does not have to be around +// to be used... is this ok? +// +template +void ValueHolder +::insert(iterator Pos, // Where to insert + iterator First, iterator Last) { // Vector to read insts from + + // Check to make sure that the values are not already in some valueholder... + + for (iterator X = First; X != Last; ++X) { + assert((*X)->getParent() == 0 && + "Cannot insert into valueholder, value already has a parent!"); + (*X)->setParent(ItemParent); + } + + // Add all of the values to the value holder... + ValueList.insert(Pos, First, Last); + + // Insert all of the instructions in the symbol table... + if (Parent) + for (;First != Last; ++First) + if ((*First)->hasName()) + Parent->getSymbolTableSure()->insert(*First); +} + #endif