[PATCH] Lazy loading for late parsed templates

Will Wilson will at indefiant.com
Mon Feb 10 05:59:29 PST 2014


Hi All,

I've had a crack at implementing lazy loading for late parsed templates
(used by MSVCCompat) as I've noticed that they add unnecessary overhead to
compilation using large PCHs. This is especially true for small files
compiled with large PCH files containing many templated functions - they
were all being deserialized but most never got used.

A quick analysis on a file in a large code base shows the AST parsing time
time dropping from 0.58s without the change and 0.37s with the change. This
is with 699/7333 late parsed templated loaded and parsed from the PCH.

I've added the data structures to the ModuleFile class to follow
convention, although I haven't added any new tests as I doubt if anyone's
likely to use modules with late template parsing enabled. However, at least
the option is there should someone want to use (and test) it with modules
in the future. That said, all existing test pass with this patch.

Formatted and tested patch attached ready for review.

Cheers,
Will.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140210/1ccb5684/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lazy_late_parsed_templates_formatted.patch
Type: application/octet-stream
Size: 19518 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140210/1ccb5684/attachment.obj>


More information about the cfe-commits mailing list