[cfe-commits] r108375 - in /cfe/trunk: include/clang/Basic/FileManager.h include/clang/Rewrite/Rewriter.h lib/Basic/FileManager.cpp lib/Checker/LLVMConventionsChecker.cpp lib/Frontend/PCHReader.cpp lib/Rewrite/Rewriter.cpp

Chris Lattner clattner at apple.com
Thu Jul 15 09:34:15 PDT 2010

On Jul 15, 2010, at 9:27 AM, Fariborz Jahanian wrote:

> On Jul 14, 2010, at 4:19 PM, Benjamin Kramer wrote:
>> Author: d0k
>> Date: Wed Jul 14 18:19:41 2010
>> New Revision: 108375
>> URL: http://llvm.org/viewvc/llvm-project?rev=108375&view=rev
>> Log:
>> Pass StringRefs by value.
> I don't seem to see the rational for changing const llvm::StringRef &  
> to StringRefs by value.

It's a (very small) performance win.  StringRef is a pair (pointer +length).  Passing it by value (e.g. on x86-64) causes it to be passed in two registers.  Passing it by reference passes the address, requiring the callee to dereference it and pinning it to the stack in the caller.


More information about the cfe-commits mailing list