[llvm-commits] CVS: llvm/lib/Bytecode/Reader/Reader.cpp

Reid Spencer rspencer at reidspencer.com
Mon Feb 12 18:14:35 PST 2007


Chris,

I have a question ..

On Mon, 2007-02-12 at 19:54 -0600, Chris Lattner wrote:
> 
> Changes in directory llvm/lib/Bytecode/Reader:
> 
> Reader.cpp updated: 1.236 -> 1.237
> ---
> Log message:
> 
> stop passing vector into ctors
> 
> 
> ---
> Diffs of the changes:  (+2 -2)
> 
>  Reader.cpp |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> 
> Index: llvm/lib/Bytecode/Reader/Reader.cpp
> diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.236 llvm/lib/Bytecode/Reader/Reader.cpp:1.237
> --- llvm/lib/Bytecode/Reader/Reader.cpp:1.236	Mon Feb 12 12:53:43 2007
> +++ llvm/lib/Bytecode/Reader/Reader.cpp	Mon Feb 12 19:53:54 2007
> @@ -702,7 +702,7 @@
>            Params.push_back(getValue(Oprnds[i], Oprnds[i+1]));
>        }
>  
> -      Result = new CallInst(F, Params);
> +      Result = new CallInst(F, &Params[0], Params.size());

I don't see why this series of changes is better for performance. The
Constructor is currently defined as:

CallInst(Value *F, const std::vector<Value*> &Par,
         const std::string &Name = "", Instruction *InsertBefore = 0);

Because Par is a reference to a const std::vector<Value*> there should
be no copying of the vector when the argument is passed. It would just
pass the pointer implied by the reference. Your change makes it pass two
arguments, which can't be faster. 

Is there something I'm missing here?

Reid.

>        if (isTailCall) cast<CallInst>(Result)->setTailCall();
>        if (CallingConv) cast<CallInst>(Result)->setCallingConv(CallingConv);
>        break;
> @@ -756,7 +756,7 @@
>            Params.push_back(getValue(Oprnds[i], Oprnds[i+1]));
>        }
>  
> -      Result = new InvokeInst(F, Normal, Except, Params);
> +      Result = new InvokeInst(F, Normal, Except, &Params[0], Params.size());
>        if (CallingConv) cast<InvokeInst>(Result)->setCallingConv(CallingConv);
>        break;
>      }
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list