[cfe-commits] r69755 - in /cfe/trunk: include/clang/Frontend/PCHBitCodes.h include/clang/Frontend/PCHReader.h include/clang/Frontend/PCHWriter.h lib/Frontend/PCHReader.cpp lib/Frontend/PCHWriter.cpp

Douglas Gregor dgregor at apple.com
Tue Apr 21 17:46:46 PDT 2009


On Apr 21, 2009, at 5:21 PM, Chris Lattner wrote:

>
> On Apr 21, 2009, at 4:56 PM, Douglas Gregor wrote:
>
>> Author: dgregor
>> Date: Tue Apr 21 18:56:24 2009
>> New Revision: 69755
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=69755&view=rev
>> Log:
>> Lazy deserialization of macro definitions for precompiled headers.
>>
>> This optimization improves performance on the Carbon-prefixed "Hello,
>> World!" example by 57%. For reference, we're now about 2.25x faster
>> than GCC PCH. We're also pulling in far less of the PCH file:
>>
>> *** PCH Statistics:
>> 411/20693 types read (1.986179%)
>> 2553/59230 declarations read (4.310316%)
>> 1093/44646 identifiers read (2.448148%)
>> 1/32954 statements read (0.003035%)
>> 21/6187 macros read (0.339421%)
>
> Very nice!  Why are we still pulling in thousands of identifiers and  
> decls?


291 of them are __builtin_* identifiers, for which we built  
declarations within the PCH file. These are getting loaded eagerly due  
to some ordering issues (e.g., we initialize builtins before we have a  
chance to intercept IdentifierInfo construction).  There are similar  
issues with other library builtins or library functions we know about  
(e.g., printf). That's probably the bulk of the declarations being  
read in.

There are a few other oddities in there... I see some keywords (!)  
that I'll obviously need to get rid of.

We're also pulling in the declarations of inline functions, so that we  
can tell CodeGen about them. It's *possible* that we don't need to do  
this. I'll think about it some more.

	- Doug



More information about the cfe-commits mailing list