[LLVMdev] use of CallInst()
Gordon Henriksen
gordonhenriksen at mac.com
Wed Mar 7 07:06:02 PST 2007
On 2007-03-07, at 06:18, Ryan M. Lefever wrote:
>> Args needs to be an array of the arguments and NumArgs needs to be
>> the size of the array. If you have a std::vector then you can just:
>>
>> new CallInst(F, &ArgVec[0], ArgVec.size(), ...)
>
> Doesn't the code above make an assumption about how std::vector is
> implemented? That should only work if the std::vector<Value*> is
> implemented using an array of Value*s. I looked at the
> documentation for STL and did not see anything about vector being
> guaranteed to be implemented as an array.
All pertinent implementations of the STL do in fact make this guarantee.
> why was direct support for a std:vector<Value*> removed from the
> CallInst constructor?
To allow the use of SmallVector instead of std::vector, which avoids
a temporary heap allocation for a significant speedup.
— Gordon
More information about the llvm-dev
mailing list